একটি এসকিউএল সার্ভার ২০০২ ডাটাবেসে এসকিউএল সার্ভার ২০১২ এর ব্যাকআপ পুনরুদ্ধার করবেন?


41

এসকিউএল সার্ভার ২০০৮-তে একটি এসকিউএল সার্ভার ২০১২ ডাটাবেস ব্যাকআপ পুনরুদ্ধার করার কোনও উপায় আছে?

আমি ফাইল সংযুক্ত করার চেষ্টা করেছি, এটি কার্যকর হয় না।


: চেকআউট এই রেফারেন্স সাহায্য আপনি হবে msdn.microsoft.com/en-us/library/ms140052.aspx dba.stackexchange.com/questions/5511/... ধন্যবাদ

এটির সমান অন্য একটি প্রশ্ন রয়েছে এবং খুব উত্তরের উত্তর দেওয়া হয়েছে: superuser.com/questions/468578/…
কাভালিরো

1
এখানে এই সমস্যার দুর্দান্ত কার্যকরী উত্তর রয়েছে (মাইগ্রেশন, ব্যাকআপ / পুনরুদ্ধার নয়): স্ট্যাকওভারফ্লো
ডন জুয়েট

উত্তর:


30

আপনার কাছে কয়েকটি বিকল্প রয়েছে:

বিকল্প একটি : স্ক্রিপ্ট আউট স্ক্রিন বিকল্পটি ব্যবহার করে সামঞ্জস্যতা মোডে স্ক্রিপ্ট আউট:

দ্রষ্টব্য: আপনি যদি স্কিমা এবং ডেটা সহ ডেটাবেস স্ক্রিপ্ট করেন তবে আপনার ডেটার আকারের উপর নির্ভর করে স্ক্রিপ্টটি বিশাল আকার ধারণ করবে এবং এসএসএমএস, স্ক্যুয়াল সিএমডি বা ওএসকিএল দ্বারা পরিচালিত হবে না (এটি জিবিতেও হতে পারে)।

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

বিকল্প বি:

সমস্ত সূচী, এফকে ইত্যাদির সাহায্যে প্রথম স্ক্রিপ্ট সারণি তৈরি করুন এবং গন্তব্য ডেটাবেজে ফাঁকা সারণী তৈরি করুন - কেবলমাত্র স্কেমার (কোনও ডেটা নেই) বিকল্প দিয়ে option

ডেটা toোকাতে বিসিপি ব্যবহার করুন

  1. বিসিপি নীচে স্ক্রিপ্ট ব্যবহার করে তথ্য। পাঠ্য মোডে এসএসএমএস সেট করুন এবং একটি ব্যাট ফাইলে নীচের স্ক্রিপ্ট দ্বারা উত্পন্ন আউটপুট অনুলিপি করুন।

    -- 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\*.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\'  /* 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) <> 'unwantedschema'    */                             /* Optional to exclude any schema  */
    order by schema_name(schema_id)
  2. ব্যাট ফাইলটি চালান যা আপনার নির্দিষ্ট করা ফোল্ডারে .dat ফাইল তৈরি করবে।

  3. আবার পাঠ্য মোডে এসএসএমএস সহ গন্তব্য সার্ভারে স্ক্রিপ্টের নীচে চালান।

    --- 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 = 'destinationDB' /* 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\' /* 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) <> 'unwantedschema' /* Optional to exclude any schema */
        order by schema_name(schema_id) 
  4. টেবিলগুলিতে ফিরে ডেটা toোকাতে এসএসএমএস ব্যবহার করে আউটপুট চালান।

এটি নেটিভ মোড ব্যবহার করার কারণে এটি খুব দ্রুত বিসিপি পদ্ধতি।


খুব সহায়ক - পদ্ধতি বি আমার পক্ষে কাজ করেছে (পদ্ধতি এ দ্বারা উত্পন্ন এসকিউএল ছিল 7 গিগাবাইট এবং এসএসএমএস এর কোনওটিই ছিল না)। কিছু এসএসআইডি এবং লিঙ্কযুক্ত সার্ভারগুলি যথাযথভাবে যায় নি, তবে লিঙ্কযুক্ত সার্ভারগুলির সাথে কখনই কোনও কাজ করার দরকার যখন প্রথমবার কাজ করে? নিশ্চিত না যে আমি এটি উত্পাদনে ব্যবহার করে খুশি হব তবে একটি পরীক্ষার পরিবেশের জন্য 95% দ্রুত এটি সঠিক ছিল।
aucuparia

@aucuparia Some SSIDs and linked servers didn't go across properly। লিঙ্কযুক্ত সার্ভারগুলি ম্যানুয়ালি স্ক্রিপ্ট আউট করতে হবে। এসএসআইডি গুলি sp_helprevlogin ব্যবহার করে ট্রান্সফার্ড করা যেতে পারে। স্ক্লজেন্ট জবস, সিসিস প্যাকেজ ইত্যাদি আপনার প্রয়োজন অনুসারে স্থানান্তরিত করা উচিত। এই পদ্ধতির মূল বিষয়টি হ'ল আপনি যখন 2 টি ডাটাবেস ডাউনগ্রেড বা মার্জ করছেন তখন যত দ্রুত সম্ভব ডেটা পাওয়া।
কিন শাহ

অপশন বি একমাত্র পদ্ধতি যা আমার পক্ষে কাজ করেছিল, যেহেতু উত্পন্ন স্ক্রিপ্টগুলি অন্যান্য উপায়ে খুব বড় ছিল
জাম্পিংজেজা ২

23

না, আপনি পিছনে যেতে পারবেন না, কেবল সামনের দিকে। আপনি ২০০৮ সালে একটি খালি ডেটাবেস তৈরি করতে পারেন এবং তারপরে স্কিমা এবং ডেটা (বা রেড গেট এবং অন্যদের থেকে তৃতীয় পক্ষের তুলনা সরঞ্জাম) লিপি করতে ম্যানেজমেন্ট স্টুডিওতে জেনারেট স্ক্রিপ্ট উইজার্ডটি ব্যবহার করতে পারেন। আপনি 2008 হিসাবে সঠিক টার্গেট সংস্করণটি সেট করেছেন তা নিশ্চিত করুন এবং আপনি 2012 সালে ব্যবহার করতে পারেন এমন বেমানান জিনিসগুলি (যেমন অফসেট বা ফর্ম্যাট) বের করতে হবে।


8

এটি করার কোনও সমর্থিত উপায় নেই কারণ এসকিউএল সার্ভার এই ধরণের সামঞ্জস্যের অনুমতি দেয় না।

আপনি যা করতে পারেন তা হ'ল

  1. এসকিউএল 2012 এ ডাটাবেস পুনরুদ্ধার করুন

  2. বস্তু এবং ডেটা জন্য স্ক্রিপ্ট তৈরি

  3. এসকিউএল 2012-এর জন্য স্বতন্ত্র যে সমস্ত বিবরণ থেকে স্ক্রিপ্টগুলি পরিষ্কার করুন
  4. 2008 এ স্ক্রিপ্টগুলি কার্যকর করুন

আপনার যদি এসকিউএল সার্ভার 2012 না থাকে তবে আপনি ব্যাকআপ পড়তে এবং ডেটা এবং কাঠামোটি বের করতে তৃতীয় পক্ষের সরঞ্জামগুলি ব্যবহার করতে পারেন।

এক্ষেত্রে এসকিউএল ২০০৮-তে খালি ডাটাবেস তৈরি করুন এবং অবজেক্ট এবং ডেটা সিঙ্ক্রোনাইজ করতে অ্যাপেক্সএসকিউএল ডিফ এবং অ্যাপেক্সএসকিউএল ডেটা ডিফের মতো সরঞ্জামগুলি ব্যবহার করুন। আপনি অন্যান্য বড় বিক্রেতাদের কাছ থেকে যেমন রেড-গেট বা ইডেরার কাছ থেকে এটি পেতে পারেন।

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