Apakah ada cara untuk memulihkan cadangan database SQL Server 2012 ke SQL Server 2008?
Saya mencoba melampirkan file, tidak berhasil.
Apakah ada cara untuk memulihkan cadangan database SQL Server 2012 ke SQL Server 2008?
Saya mencoba melampirkan file, tidak berhasil.
Jawaban:
Anda memiliki beberapa opsi:
Opsi A : Script out database dalam mode kompatibilitas menggunakan opsi Generate script:
Catatan: Jika Anda skrip database dengan skema dan data, tergantung pada ukuran data Anda, skrip akan besar dan tidak akan ditangani oleh SSMS, sqlcmd atau osql (mungkin dalam GB juga).
Opsi B:
Pertama skrip tabel pertama dengan semua Indeks, FK, dll dan buat tabel kosong di database tujuan - opsi dengan SCHEMA ONLY (Tidak ada data).
Gunakan BCP untuk memasukkan data
bcp keluar data menggunakan skrip di bawah ini. atur SSMS dalam Mode Teks dan salin output yang dihasilkan oleh skrip di bawah ini dalam file bat.
-- 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)
Jalankan file bat yang akan menghasilkan file dat di folder yang telah Anda tentukan.
Jalankan skrip di bawah ini pada server tujuan dengan SSMS dalam mode teks lagi.
--- 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)
Jalankan output menggunakan SSMS untuk memasukkan kembali data dalam tabel.
Ini adalah metode bcp yang sangat cepat karena menggunakan mode Asli.
Some SSIDs and linked servers didn't go across properly
. Server yang terhubung harus dibuat secara manual. SSID dapat ditransfer menggunakan sp_helprevlogin. Pekerjaan SQLAgent, paket ssis dll harus dipindahkan sesuai kebutuhan Anda. Inti dari metode ini adalah untuk mendapatkan data secepat mungkin saat Anda menurunkan versi atau menggabungkan 2 basis data.
Tidak, Anda tidak bisa mundur, hanya maju. Anda bisa membuat database kosong pada 2008 dan kemudian menggunakan wizard Generate Scripts di Management Studio untuk skrip skema dan data (atau alat perbandingan pihak ke-3 dari Red Gate dan lainnya). Pastikan Anda menetapkan versi target yang tepat sebagai 2008, dan Anda harus menyempurnakan hal-hal yang tidak kompatibel (misalnya OFFSET atau FORMAT) yang mungkin Anda gunakan pada tahun 2012.
Tidak ada cara yang didukung untuk melakukan ini karena SQL Server tidak mengizinkan kompatibilitas semacam ini.
Yang bisa Anda lakukan adalah
pulihkan database pada SQL 2012
menghasilkan skrip untuk objek dan data
Jika Anda tidak memiliki SQL Server 2012 maka Anda dapat menggunakan alat pihak ketiga untuk membaca cadangan dan mengekstrak data dan struktur.
Dalam hal ini buat saja database kosong pada SQL 2008 dan gunakan alat seperti ApexSQL Diff dan ApexSQL Data Diff untuk menyinkronkan objek dan data. Anda dapat menemukan ini dari vendor besar lainnya juga seperti Red-Gate atau Idera.