এক সার্ভার থেকে অন্য সার্ভারে (শত শত) সারণী অনুলিপি করা হচ্ছে (এসএসএমএস সহ)


27

আমার বেশ কয়েকটি শত (বর্তমানে 466, তবে কখনও বাড়ছে) সারণী রয়েছে আমাকে একটি সার্ভার থেকে অন্য সার্ভারে অনুলিপি করতে হবে।

এর আগে আমার কখনই এটি করা হয়নি, সুতরাং কীভাবে এটি পৌঁছানো যায় তা সম্পর্কে আমি মোটেও নিশ্চিত নই। সমস্ত টেবিল একই বিন্যাসে রয়েছে:Cart<Eight character customer number>

এটি একটি বৃহত প্রকল্পের অংশ যা এর মধ্যে আমি এই সমস্ত Cart<Number>টেবিলগুলিকে একটি Cartsটেবিলের সাথে একত্রীকরণ করছি , তবে এটি সম্পূর্ণ আলাদা প্রশ্ন।

এই সমস্ত টেবিলের অনুলিপি করতে আমি কি কারও কাছে সেরা অনুশীলন পদ্ধতি ব্যবহার করতে পারি? উভয় সার্ভারে ডাটাবেসের নাম একই, যদি এটি সাহায্য করে। এবং যেমনটি আমি আগে বলেছি, আমার saঅ্যাকাউন্ট রয়েছে তাই আমি এ থেকে বি তে ডেটা পাওয়ার জন্য যা প্রয়োজন তা করতে পারি, উভয় সার্ভার একই সার্ভার ফার্মে রয়েছে।


উত্তর:


21

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


4
আগ্রহী হলে পাওয়ারশেলের মাধ্যমেও একই রপ্তানি কাজ করতে পারে। এই ক্রিয়াটি সম্পাদন করার অনুরূপ লিপিটি এখানে আমার উত্তরে রয়েছে: dba.stackexchange.com/a/122149/507
শন মেল্টন

আমদানি / রফতানি সূচী এবং নির্ভরতা অনুলিপি করে না কেন? 466 টেবিলের জন্য সূচকগুলি পুনরায় তৈরি করা কি খুব কঠিন হবে না?
ভিনি

@ ভিনি আপনি জেনারেট স্ক্রিপ্টস উইজার্ডটিও ব্যবহার করতে পারেন, যা আপনাকে সূচী অনুলিপি করার অনুমতি দেয় (এটি নির্ভরযোগ্যভাবে সঠিক নির্ভরতার ক্রমে কোনও স্ক্রিপ্ট উত্পন্ন করে কিনা তা আমি জানি না, যদিও আমি সর্বদা রেডগেট এসকিউএল এর সাথে তুলনা করেছি)।
অ্যারন বার্ট্র্যান্ড

@ অ্যারোনবার্ট্র্যান্ড: ঠিক আছে। আমারও একই প্রশ্ন ছিল। তবে যখন আমি ডেটটাইম আমদানি করতাম তখন ছোট্ট তারিখের সময়ও রূপান্তরিত হয়েছিল
ভিনি

23

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

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'SELECT * INTO [database].dbo.' + QUOTENAME(name)
  + N' FROM [source_linked_server].[database].dbo.' + QUOTENAME(name) + N';'
FROM sys.tables
WHERE name LIKE N'Cart[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]';

PRINT @sql; -- this will only print 8K, enough to spot check
--EXEC [destination_linked_server].master.sys.sp_executesql @sql;

19

আপনি যদি এটি পরীক্ষা করে কিছুটা পরিবর্তন করেন তবে সহজেই পুনরায় চালনযোগ্য হতে পারে এমন কোনও কিছু যদি আপনি চান তবে আমার উত্তরটি এখানে দেখুন:

একটি ডাটাবেস থেকে অন্য স্ক্রিপ্টে ডেটা আমদানি করুন

এই উত্তরটি একটি এসকিউএলসিআরআর সংরক্ষণ করা পদ্ধতি ব্যবহার করে যা SqlBulkCopyNET এ শ্রেণীর ব্যবহার করে । সঞ্চিত পদ্ধতিটি ব্যবহার করে সারণীগুলি লুপ করে এমন একটি কার্সারে করা যায়। এটি প্রক্রিয়াটির সহজ সম্পাদনার পাশাপাশি নতুন টেবিলগুলির অ্যাকাউন্টিং করার জন্য বা সহজেই WHEREকার্সার কোয়েরিতে শর্তের মাধ্যমে এক বা একাধিক টেবিলকে বাদ দিয়ে দেয় ।


19

আপনি গন্তব্য ডেটাবেসের ভিতরে বিসিপি আউট এবং বাল্ক ইনসার্ট ব্যবহার করতে পারেন। আপনি এই স্ক্রিপ্ট ব্যবহার করতে পারেন

আপনি ডেটা ট্রান্সফার করতে এসএসআইএস (ডেটা ইমপোর্ট / এক্সপোর্ট) ব্যবহার করতে পারেন ।

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