Saya telah menemukan BCP lebih efektif daripada beberapa alat untuk mendapatkan data ke versi SQL Server sebelumnya, dan untuk menarik data dari RDS. (Terima kasih @ivan_posdeev.)
Saya pertama kali menghasilkan skema dengan mengklik kanan pada database di SQL Server Management Studio, Tugas, Menghasilkan skrip. Centang semua objek, dalam objek lanjutan memastikan semua yang Anda butuhkan akan ditulis (statistik, indeks, dll.), Hapus centang "USE database" jika database tujuan Anda memiliki nama yang berbeda, atur kompatibilitas ke versi database tujuan Anda, dan hasilkan sebuah file yang membuat skema Anda. Buat database di tujuan Anda dan jalankan file ini di atasnya (menggunakan osql, sqlcmdatau GUI).
Untuk memindahkan data, jalankan kueri berikut dua kali pada basis data sumber , pertama-tama beri komentar pada kolom kedua untuk menghasilkan file batch untuk mengekstrak data, lalu beri komentar pada kolom pertama untuk menghasilkan file batch impor untuk dijalankan di tujuan Anda. (Anda perlu menambahkan server sumber dan tujuan Anda, nama contoh, direktori file keluaran dan input, nama pengguna dan kata sandi. Untuk menggunakan keamanan terintegrasi, ganti opsi -Udan -Pdengan adil -T.)
Ini mendukung Unicode, jika Anda tidak membutuhkannya, ubah -Nsakelar di kedua pernyataan menjadi -n.
SELECT
'bcp SOURCEDATABASE.' + s.Name + '.' + t.NAME + ' out d:\dbdump\' + s.Name + '.' + t.NAME + '.dat -N -S SOURCESERVER\INSTANCE -UUSER -PPASSWORD'
-- 'bcp DESTINATIONDATASE.' + s.Name + '.' + t.NAME + ' in d:\dbdump\' + s.Name + '.' + t.NAME + '.dat -N -S DESTINATIONSERVER\INSTANCE -UUSER -PPASSWORD -E -h TABLOCK -b 1000 -e d:\dbdump\' + s.Name + '.' + t.NAME + '.ERRORS.dat'
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
ORDER BY
s.Name, t.NAME
Setelah menjalankan periksa file bernama schema.tablename.ERRORS.dat - akan menyertakan baris yang gagal, kosongkan jika tidak ada.
Referensi MSDN untuk BCP di sini , lebih bersahabat dari opsi BCP di sini .
Saya telah menemukan ini sangat unggul untuk menghasilkan skrip, dan salah satu alat yang saya coba. Ini juga berjalan pada basis data RDS (yang tidak mengizinkan cadangan). File data yang dihasilkan berukuran 30% dari ukuran skrip SQL, menjalankannya membutuhkan waktu, dan jauh lebih andal. (Skrip yang dihasilkan oleh SQL Server untuk data skrip selalu tersandung, kadang-kadang dapat diprediksi kadang tidak, SQL yang dihasilkan tidak kompatibel dengan 2008R2 (misalnya, digunakan nvarchar(0), sering tidak lengkap tanpa alasan yang dapat dilihat, dll. BCP juga mereplikasi pelanggaran kendala apa pun) , seperti integritas referensial.).