आप नीचे किसी भी विधि का अनुसरण कर सकते हैं:
नोट: यदि आप किसी भी नई सुविधाओं जैसे नए डेटा प्रकार आदि का उपयोग कर रहे हैं, तो आपको परीक्षण करना होगा क्योंकि यह त्रुटियों को फेंक देगा।
विधि 1: मूल उपकरण का उपयोग करना
डेटाबेस से बाहर निकलें SCHEMA_ONLY और गंतव्य सर्वर पर एक खाली डेटाबेस को फिर से बनाएँ। नीचे स्क्रीनशॉट हैं:
डेटा डालने के लिए BCP OUT और BULK INSERT का उपयोग करें।
नीचे स्क्रिप्ट है जो आपको भाग 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: थर्ड पार्टी टूल्स का उपयोग करना
गंतव्य सर्वर पर एक रिक्त डेटाबेस बनाएँ। गंतव्य सर्वर में डेटा बनाने और लोड करने के लिए Redgate के स्कीमा तुलना और डेटा की तुलना करें।
नोट: मैंने Redgate के स्कीमा और डेटा तुलना का उपयोग किया है और वे इस प्रकार के कार्य के लिए सबसे अच्छे उपकरण हैं और इसलिए यदि आप 3rd पार्टी टूल का उपयोग कर रहे हैं, तो मेरी सिफारिश Redgate होगी।