क्या SQL Server 2008 में SQL Server 2012 डेटाबेस बैकअप को पुनर्स्थापित करने का कोई तरीका है?
मैंने फ़ाइल संलग्न करने की कोशिश की, यह काम नहीं करता है।
क्या SQL Server 2008 में SQL Server 2012 डेटाबेस बैकअप को पुनर्स्थापित करने का कोई तरीका है?
मैंने फ़ाइल संलग्न करने की कोशिश की, यह काम नहीं करता है।
जवाबों:
आपके पास कुछ विकल्प हैं:
विकल्प A : स्क्रिप्ट स्क्रिप्ट विकल्प का उपयोग करके संगतता मोड में डेटाबेस से बाहर स्क्रिप्ट:
नोट: यदि आप अपने डेटा आकार के आधार पर स्कीमा और डेटा के साथ डेटाबेस को स्क्रिप्ट करते हैं, तो स्क्रिप्ट बड़े पैमाने पर और अभ्यस्त SSMS, sqlcmd या osql द्वारा नियंत्रित किया जाएगा (जीबी में भी हो सकता है)।
विकल्प बी:
पहले सूची को सभी इंडेक्स, FK, आदि के साथ पहले टेबल आउट करें और गंतव्य डेटाबेस में रिक्त तालिका बनाएं - SCHEMA केवल विकल्प (कोई डेटा नहीं)।
डेटा डालने के लिए BCP का उपयोग करें
नीचे स्क्रिप्ट का उपयोग करके डेटा को bcp करें। टेक्स्ट मोड में SSMS सेट करें और एक बैट फ़ाइल में स्क्रिप्ट के नीचे उत्पन्न आउटपुट को कॉपी करें।
-- 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)
उस बैट फ़ाइल को चलाएं जो आपके द्वारा निर्दिष्ट फ़ोल्डर में .dat फाइलें उत्पन्न करेगी।
पाठ मोड में SSMS के साथ गंतव्य सर्वर पर स्क्रिप्ट के नीचे फिर से चलाएँ।
--- 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)
तालिका में डेटा वापस डालने के लिए SSMS का उपयोग करके आउटपुट चलाएँ।
यह बहुत तेज़ bcp तरीका है क्योंकि यह Native मोड का उपयोग करता है।
Some SSIDs and linked servers didn't go across properly
। लिंक किए गए सर्वर को मैन्युअल रूप से स्क्रिप्ट करना होगा। SSIDs को sp_helprevlogin का उपयोग करके ट्रान्सफर किया जा सकता है। SQLAgent नौकरियों, ssis संकुल आदि को आपकी आवश्यकताओं के अनुसार स्थानांतरित किया जाना चाहिए। इस विधि का मतलब यह है कि जब आप 2 डेटाबेस को अपग्रेड या मर्ज कर रहे हों, तो डेटा को जितनी जल्दी हो सके उतना जल्दी प्राप्त करें।
नहीं, आप आगे नहीं जा सकते, केवल आगे। आप 2008 पर एक खाली डेटाबेस बना सकते हैं और फिर स्कीमा और डेटा (या लाल गेट और अन्य से 3 पार्टी तुलना उपकरण) को स्क्रिप्ट करने के लिए प्रबंधन स्टूडियो में जनरेट स्क्रिप्ट्स विज़ार्ड का उपयोग कर सकते हैं। सुनिश्चित करें कि आपने सही लक्ष्य संस्करण 2008 के रूप में सेट किया है, और आपको असंगत चीजों (जैसे OFFSET या FORMAT) को मांस देना होगा जो आपने 2012 में उपयोग किया होगा।
ऐसा करने का कोई समर्थित तरीका नहीं है क्योंकि SQL सर्वर इस तरह की संगतता की अनुमति नहीं देता है।
आप क्या कर सकते हैं
SQL 2012 पर डेटाबेस पुनर्स्थापित करें
वस्तुओं और डेटा के लिए स्क्रिप्ट उत्पन्न करते हैं
यदि आपके पास SQL Server 2012 नहीं है, तो आप बैकअप पढ़ने और डेटा और संरचना निकालने के लिए तीसरे पक्ष के टूल का उपयोग कर सकते हैं।
इस स्थिति में बस SQL 2008 पर खाली डेटाबेस बनाएँ और ऑब्जेक्ट्स और डेटा को सिंक्रनाइज़ करने के लिए ApexSQL Diff और ApexSQL Data Diff जैसे टूल का उपयोग करें । आप इन्हें अन्य प्रमुख विक्रेताओं जैसे रेड-गेट या इडेरा से भी पा सकते हैं।