কীভাবে একটি এসকিউএল সার্ভার ২০১২ থেকে এসকিউএল সার্ভার ২০০ a-তে একটি ডাটাবেস স্থানান্তর করবেন


30

আমার যদি এসকিউএল সার্ভার 2012 (32 বিট) থেকে এসকিউএল সার্ভার 2005 (64 বিট) এ একটি ডাটাবেস স্থানান্তর করতে চান তবে আমার বিকল্পগুলি কী?

আমি জানি আমি পারি না:

  • এসকিউএল সার্ভার 2005-এ ডাটাবেসের ব্যাকআপ পুনরুদ্ধার করুন
  • বিচ্ছিন্ন এবং সংযুক্তি

আমি জানি, আমি পারি:

  • আমদানি ডেটা উইজার্ড ব্যবহার করুন, এবং আমি এটি একটি ডাটাবেসে চেষ্টা করেছি, তবে এটি কেবল ডেটা সরিয়ে নিয়ে যায়, এমনকি তা সমস্যাজনকও ছিল কারণ পরিচয় কলামগুলি বজায় রাখতে টেম্প টেবিল তৈরি করতে, সমস্ত এফকে, সূচকগুলি পুনরায় তৈরি করা ইত্যাদির জন্য আমাকে প্রচুর কাজ করতে হবে needed

একটি সহজ বিকল্প আছে?


12
সহজ বিকল্পটি হ'ল গন্তব্যটিকে 2012 এ আপগ্রেড করা, সত্য কথা বলা।
অ্যারন বারট্র্যান্ড

উত্তর:


40

আপনি নীচের যে কোনও পদ্ধতি অনুসরণ করতে পারেন:

দ্রষ্টব্য: আপনি যদি নতুন কোনও ডেটা জাতীয় ইত্যাদির মতো কোনও নতুন বৈশিষ্ট্য ব্যবহার করে থাকেন তবে আপনাকে এটি পরীক্ষা করতে হবে কারণ এটি ত্রুটি ছুঁড়ে দেবে।

পদ্ধতি 1: নেটিভ সরঞ্জাম ব্যবহার করে

  1. SCHEMA_ONLY ডাটাবেসটি স্ক্রিপ্ট করুন এবং গন্তব্য সার্ভারে একটি খালি ডাটাবেস পুনরায় তৈরি করুন। স্ক্রিনশটগুলি নীচে:

    এখানে চিত্র বর্ণনা লিখুন

    এখানে চিত্র বর্ণনা লিখুন

    এখানে চিত্র বর্ণনা লিখুন

  2. ডেটা toোকাতে বিসিপি আউট এবং বাল্ক ইনসার্ট ব্যবহার করুন।

নীচে স্ক্রিপ্ট যা আপনাকে পার্ট 2 নিয়ে সহায়তা করবে।

/************************************************************************************************************************************************
Author      :   KIN SHAH    *********************************************************************************************************************
Purpose     :   Move data from one server to another*********************************************************************************************
DATE        :   05-28-2013  *********************************************************************************************************************
Version     :   1.0.0   *************************************************************************************************************************
RDBMS       :   MS SQL Server 2008R2 and 2012   *************************************************************************************************
*************************************************************************************************************************************************/

-- save below output in a bat file by executing below in SSMS in TEXT mode
-- clean up: create a bat file with this command --> del D:\BCP_OUT\*.dat 

select '"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\bcp.exe" '-- path to BCP.exe
        +  QUOTENAME(DB_NAME())+ '.'                                    -- Current Database
        +  QUOTENAME(SCHEMA_NAME(SCHEMA_ID))+'.'            
        +  QUOTENAME(name)  
        +  ' out D:\BCP_OUT\'                                           -- Path where BCP out files will be stored
        +  REPLACE(SCHEMA_NAME(schema_id),' ','') + '_' 
        +  REPLACE(name,' ','') 
        + '.dat -T -E -SSERVERNAME\INSTANCE -n'                         -- ServerName, -E will take care of Identity, -n is for Native Format
from sys.tables
where is_ms_shipped = 0 and name <> 'sysdiagrams'                       -- sysdiagrams is classified my MS as UserTable and we dont want it
and schema_name(schema_id) <> 'some_schema_exclude'                     -- Optional to exclude any schema 
order by schema_name(schema_id)                         



--- Execute this on the destination server.database from SSMS.
--- Make sure the change the @Destdbname and the bcp out path as per your environment.

declare @Destdbname sysname
set @Destdbname = 'destination_database_Name'               -- Destination Database Name where you want to Bulk Insert in
select 'BULK INSERT '                                       -- Remember Tables **must** be present on destination Database
        +  QUOTENAME(@Destdbname)+ '.'
        +  QUOTENAME(SCHEMA_NAME(SCHEMA_ID))+'.' 
        +  QUOTENAME(name) 
        + ' from ''D:\BCP_OUT\'                             -- Change here for bcp out path
        +  REPLACE(SCHEMA_NAME(schema_id),' ','') + '_'
        +  REPLACE(name,' ','') 
        +'.dat'' 
        with (
        KEEPIDENTITY,
        DATAFILETYPE = ''native'',  
        TABLOCK
        )'  + char(10) 
        + 'print ''Bulk insert for '+REPLACE(SCHEMA_NAME(schema_id),' ','') + '_'+  REPLACE(name,' ','')+' is done... '''+ char(10)+'go' 
from sys.tables
where is_ms_shipped = 0 and name <> 'sysdiagrams'           -- sysdiagrams is classified my MS as UserTable and we dont want it
and schema_name(schema_id) <> 'some_schema_exclude'         -- Optional to exclude any schema 
order by schema_name(schema_id)

পদ্ধতি 2: তৃতীয় পক্ষের সরঞ্জাম ব্যবহার করা

গন্তব্য সার্ভারে একটি ফাঁকা ডাটাবেস তৈরি করুন। গন্তব্য সার্ভারে ডেটা তৈরি এবং লোড করতে রেডগেটের স্কিমা তুলনা এবং ডেটা তুলনা ব্যবহার করুন।

দ্রষ্টব্য: আমি রেডগেটের স্কিমা এবং ডেটা তুলনা ব্যবহার করেছি এবং এ জাতীয় কাজের জন্য এগুলি সেরা সরঞ্জাম এবং তাই আপনি যদি তৃতীয় পক্ষের সরঞ্জাম ব্যবহার করেন তবে আমার প্রস্তাবটি রেডগেট হবে would


7
+1 তবে মনে রাখবেন যে কয়েকটি নির্দিষ্ট জিনিস রয়েছে যা কেবল গন্তব্যে কাজ করবে না (এবং আমি নিশ্চিত নই যে তৃতীয় পক্ষের সরঞ্জামগুলি কীভাবে এই সমস্ত পরিচালনা করবে)। SEQUENCE গুলি, অফসেট / ফিট, লেগ / নেতৃত্বের মতো কোড ইত্যাদির মতো বিষয়গুলি
অ্যারন বার্ট্র্যান্ড

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

4

এখানে ইতিমধ্যে প্রস্তাবিত পদ্ধতিগুলি ছাড়াও, আপনি একটি BACPAC ফাইল তৈরি করার চেষ্টা করতে পারেন এবং এটিকে আপনার গন্তব্যে আমদানি করতে পারেন। এটি মাইক্রোসফ্ট প্রাক-প্রিমিয়াম থেকে আজুর ক্লাউড ডেটাবেজে আপনার ডেটাবেসগুলিকে স্থানান্তর করার পরামর্শ দেয় to

এর সুবিধাটি হ'ল এটি রফতানির পাশাপাশি স্কিমার ডেটা এবং এটি ডেটাবেস সংস্করণের উপর নির্ভর করে না, তাই আপনি তাত্ত্বিকভাবে কোনও সংস্করণ থেকে কোনও সংস্করণে ডাটাবেসগুলি আমদানি করতে পারেন।

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

আপনার কেবলমাত্র নতুন এসএসএমএস সংস্করণগুলির মধ্যে একটি (17 বা 18): https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

একটি BACPAC ফাইল তৈরি শুরু করার জন্য, একটি ডাটাবেসে ডান ক্লিক করুন এবং "ডেটা-স্তর অ্যাপ্লিকেশন রফতানি করুন ..." নির্বাচন করুন ("এক্সট্রাট ডেটা-স্তর অ্যাপ্লিকেশন ..." যা কিছু অন্যরকমের সাথে বিভ্রান্ত হওয়ার নিশ্চয়তা রাখবেন না):

ডেটা-স্তর অ্যাপ্লিকেশন রফতানি করুন ...

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

ডেটা-স্তর অ্যাপ্লিকেশন আমদানি করুন ...

এটি আপনাকে পদক্ষেপগুলির মাধ্যমে গাইড করার জন্য একটি সাধারণ উইজার্ডও প্রদর্শন করবে।


-1

SQL সার্ভারের সংস্করণ হ্রাস করা খুব পরিশ্রমের কাজ।
হ্রাস করার মতো কিছু বিকল্প রয়েছে;
প্রথমত, সমস্ত ডাটাবেস অবজেক্ট স্ক্রিপ্ট তৈরি করুন এবং গন্তব্য সার্ভারে চালান।
এর পরে আপনি ব্যবহার করতে পারেন;

  • SSIS,
  • আমদানি ডেটা সরঞ্জাম,
  • তৃতীয় পক্ষের সরঞ্জাম যেমন রেডগেট বা অন্যান্য।

তবে রেডগেট ডেটা তুলনা সরঞ্জামের জন্য,

আপনাকে অবশ্যই বিবেচনা করতে হবে যে এটি কেবল সারণীগুলির সাথে তুলনা করে যেখানে প্রাথমিক কী রয়েছে। সুতরাং যদি আপনার টেবিলগুলিতে প্রাথমিক কী নেই, তবে আপনাকে অবশ্যই অন্যান্য উপায় ব্যবহার করতে হবে


8
আমি মনে করি না যে এই উত্তর কিংসের উত্তরে উন্নতি করে
জেমস অ্যান্ডারসন

-3

এসকিউএল সার্ভারে একটি ডাটাবেস ডাউনগ্রেড করা অসম্ভব। যাইহোক, সমস্ত ডিবি অবজেক্টকে স্ক্রিপ্ট করা এবং গন্তব্য ডেটাবেজে স্ক্রিপ্টটি প্রয়োগ করা একটি কাজ ound এসএসআইএস এটি সম্পাদন করতে সহায়তা করার একটি দুর্দান্ত উপায়।


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