আমি কীভাবে কোনও এসকিউএল সার্ভার ডেটাবেস-এর কোলেশন পরিবর্তন করব?


16

আমি একটি একক কোলেশনে সমস্ত ডেটাবেস মানক করার চেষ্টা করছি - লাতিন 1_ জেনারাল_সিআই_এএস (স্ট্যান্ডার্ড কোলেশন)। আমার কাছে কিছু ডাটাবেস রয়েছে যা এসকিউএল_ল্যাটিন 1_ জেনারাল_সিপি 1_সিআই_এএস-এ রয়েছে।

আমি জানি আমি ডাটাবেস কোলেশন পরিবর্তন করতে ALTER DATABASE ব্যবহার করতে পারি, তবে এটি কেবলমাত্র নতুন অবজেক্টগুলিকেই প্রভাবিত করে। আমার বোধগম্যতা হ'ল বিদ্যমান কলামগুলি পরিবর্তন করার একমাত্র উপায় হ'ল প্রতিটি টেবিলের প্রতিটি কলামে অল্টার কালাম করা - এবং এটি করার জন্য আমার সমস্ত সূচী বাদ এবং পুনরায় তৈরি করতে হবে।

আমার ধারণা এটি দেখতে এরকম কিছু দেখাবে:

DROP INDEX indexname ON tablename

GO

ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL

GO

CREATE CLUSTERED INDEX indexname ON tablename (columname ASC)

এবং পুরো ডাটাবেসে প্রতিটি বর্ণ, চর, পাঠ্য, এনভারচর, এনচার এবং এনটেক্সট কলামের জন্য পুনরাবৃত্তি করুন। এটি একটি বিশাল এসকিউএল স্ক্রিপ্ট হবে।

এটি করার কি আরও সহজ উপায় আছে বা কেউ এসকিউএল স্ক্রিপ্টটি তৈরির কাজটি স্বয়ংক্রিয় করার কোনও উপায়ের পরামর্শ দিতে পারে?

উত্তর:


9

পুরো ডিবি এবং সমস্ত কলামের জন্য কীভাবে এটি করা যায় তা নিয়ে এমএস কেবি 325335 এর বিকল্প রয়েছে।

মূলত:

  1. স্ক্রিপ্ট ডাটাবেস সারণী (নতুন কোলেশন সহ)
  2. ডিটিএস / এসএসআইএস ডেটা (কোলিশেশন দেখুন)
  3. সীমাবদ্ধতা যুক্ত করুন

3

এটির জন্য কিছু টুইট করার প্রয়োজন হতে পারে তবে "এসকিউএল সার্ভার 2000 কোলিশন চেঞ্জার" ইউটিলিটিটি ব্যবহার করে আমার সাফল্য পেয়েছে: http://www.codeproject.com/KB/datedia/ChangeCollation.aspx


2

দুর্ভাগ্যক্রমে এটি এসকিউএল সার্ভারে সহজ কাজ নয়।

আপনি রেডগেটের এসকিউএল এর মতো একটি স্ক্রিপ্টিং সরঞ্জাম ব্যবহার করতে পারেন আপনার বিদ্যমান ডাটাবেস অবজেক্টের জন্য তুলনা করুন (টেবিল, সঞ্চিত পদ্ধতি, মতামত ইত্যাদি) যদি আপনার লাইসেন্স না থাকে তবে আপনি নিখরচায় ট্রায়াল ব্যবহার করতে পারেন। ডান কোলেশন সহ আপনি নতুন ডাটাবেস তৈরি করার পরে এবং আপনার স্ক্রিপ্ট থেকে বস্তুগুলি পুনর্নির্মাণের পরে, আপনি এক ডাটাবেস থেকে অন্য ডাটাবেসে ডেটা স্থানান্তর করতে এসএসআইএস চালাতে পারেন। আপনার যদি প্রচুর ডেটা থাকে তবে টি-এসকিউএল বাল্ক সন্নিবেশ ব্যবহার করুন।

সেই সার্ভারে ভবিষ্যতের ডেটাবেসগুলির জন্য সঠিক কোলেশন থাকার জন্য, আপনি সার্ভারে ডিফল্ট কোলেশন পরিবর্তন করতে পারেন। নিম্নলিখিত এমএসডিএন নিবন্ধটি ব্যাখ্যা করে যে ALTER DATABASE এবং ALTER TABLE এর COLLATE ধারা ব্যবহার করে কী পরিবর্তন হয়:

ডেটাবেস কলেশন সেট এবং পরিবর্তন করা হচ্ছে (এসকিউএল সার্ভার ২০০৮ বই অনলাইন)

ALTER DATABASE স্টেটমেন্টের COLLATE ধারাটি ব্যবহার করে কোনও ব্যবহারকারী ডাটাবেসে তৈরি হওয়া যে কোনও নতুন অবজেক্টের কোলেশন পরিবর্তন করতে পারেন । এই বিবৃতিটি কোনও বিদ্যমান ব্যবহারকারী-সংজ্ঞায়িত টেবিলগুলিতে কলামগুলির জোট পরিবর্তন করে না। এগুলো ক্রমসজ্জিত দফা ব্যবহার দ্বারা পরিবর্তন করা যাবে ALTER টেবিল

আপনি যখন ডাটাবেস কোলেশন পরিবর্তন করবেন, আপনি নিম্নলিখিত পরিবর্তন করবেন:

  • ডাটাবেসের জন্য ডিফল্ট কোলেশন। এই নতুন ডিফল্ট কলেজটি কলাম, ব্যবহারকারী-সংজ্ঞায়িত ডেটা ধরণের, ভেরিয়েবল এবং পরবর্তীকালে ডাটাবেসে তৈরি পরামিতিগুলিতে প্রয়োগ করা হয়। এটি ডাটাবেসে সংজ্ঞায়িত অবজেক্টগুলির বিরুদ্ধে এসকিউএল স্টেটমেন্টগুলিতে নির্দিষ্ট করা অবজেক্ট শনাক্তকারীদের সমাধান করার সময়ও ব্যবহৃত হয়।
  • সিস্টেম সারণীতে যে কোনও চর, বারচর, পাঠ্য, এনচার, এনভারচর বা নেক্সট কলামগুলি নতুন কোলেশনে পরিবর্তিত হয়।
  • সঞ্চিত পদ্ধতি এবং ব্যবহারকারীর দ্বারা সংজ্ঞায়িত ফাংশনগুলির জন্য বিদ্যমান বিদ্যমান চর, বারচার, পাঠ্য, এনচার, এনভারচর, বা এনটেক্সট প্যারামিটার এবং স্কেলার রিটার্ন মানগুলি নতুন কোলেশনে পরিবর্তিত হয়েছে।
  • চর, বার্চার, পাঠ্য, এনসিআর, এনভারচর, বা এনটেক্সট সিস্টেমের ডেটা ধরণের এবং এই সিস্টেমের ডেটা ধরণের উপর ভিত্তি করে সমস্ত ব্যবহারকারী-সংজ্ঞায়িত ডেটা প্রকারগুলি নতুন ডিফল্ট কোলেশনে পরিবর্তিত হয়েছে।

1

সাধারণত কোনও লাইভ সার্ভারে এটি করার পরামর্শ দেওয়া হয় না। শেষবার যখন আমি দেখলাম, এটি করা মাইক্রোসফ্ট দ্বারা আনুষ্ঠানিকভাবে সমর্থন করে নি। অনুশীলনে এটি করতে, আপনাকে ডান কোলিশেশন সহ একটি নতুন উদাহরণ তৈরি করতে হবে এবং এটিতে ডাটাবেস স্থানান্তর করতে হবে।

কোনও ডিফল্ট একটি নতুন ডিফল্ট কল্যানেশন সহ একটি সার্ভারের সাথে ডিবি পুনরুদ্ধার করা সমস্ত ধরণের মজাদার কারণ টেম্পিডবিতে নতুন সার্ভারের জোট থাকবে তাই এটিও সুপারিশ করা হয় না।


1

এই ইউটিলিটিটি ব্যবহার করে দেখুন , একটি উত্স ডাটাবেস একটি লক্ষ্য ডাটাবেসে প্রয়োগ করার জন্য প্রয়োজনীয় সমস্ত স্ক্রিপ্ট তৈরি করবে যাতে কোলেশন নিরাপদে পরিবর্তিত হয়।


1

আপনি সহজেই যথেষ্ট পরিমাণে কোনও স্ক্রিপ্ট তৈরি করতে ইনফোমেশন_স্কেমা মতামত ব্যবহার করতে পারেন তবে আমি নিশ্চিত নই যে এটি আপনার সমস্যা সমাধানের সেরা উপায়। লার্জ ডিবিতে সমস্ত সূচি পুনরায় তৈরি করা অনেক সময় / লগ স্পেস ইত্যাদি গ্রহণ করতে পারে আমি নতুন স্থানটিতে মাইগ্রেট (পুনরুদ্ধার করব না) নিয়ে যেতে পারি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.