Mengubah catatan total xx Diproses default untuk pembuatan skrip data SQL

Di SQL Server 2008, Anda dapat mengklik kanan pada database dan memilih "Generate Scripts...". Anda kemudian dapat memilih tabel tertentu dan memilih "Hanya data" di bawah "Jenis data ke skrip". Ketika Anda melakukan ini, secara otomatis menyisipkan baris dalam skrip seperti ini setiap 100 catatan:

cetak 'Memproses total 100 catatan'

Pada dasarnya, ini "mengelompokan" catatan yang dimasukkan ke dalam bagian 100 dan menambahkan pernyataan PRINT ini di akhir setiap kumpulan. Meskipun hal ini baik-baik saja ketika Anda memasukkan beberapa ribu catatan, hal ini menjadi tidak berguna ketika Anda mengimpor satu juta catatan.

Apakah ada cara untuk mengubah ukuran "batch" ini ke nilai lain, seperti "1000"? Saya tidak dapat menemukan ini dalam daftar opsi saat membuat skrip. Apakah mengubah nilai ini akan memengaruhi kinerja saat skrip dijalankan atau ada masalah lain?


person Loki70    schedule 15.07.2011    source sumber


Jawaban (1)


Temukan dan ganti akan segera mengatasi masalah Anda, tetapi membuat skrip INSERT adalah cara yang tidak biasa untuk menyalin jutaan catatan dari satu database ke database lainnya; apakah ada alasan khusus mengapa Anda ingin melakukannya dengan cara ini?

Metode yang lebih umum adalah bcp.exe atau SSIS (jika Anda memiliki kebutuhan yang lebih kompleks) karena metode tersebut secara khusus ditujukan untuk bekerja dengan data dalam jumlah besar. Atau jika kedua database berada di server yang sama, maka INSERT...SELECT... akan menjadi cara tercepat dari semuanya. dokumentasi menjelaskan berbagai opsi dalam TSQL murni dan memberikan saran mengenai kinerja; SSIS adalah topik yang lebih besar.

person Pondlife    schedule 15.07.2011
comment
Poin bagus. Saya seharusnya menjelaskan skenario yang mengarah pada hal ini dengan lebih rinci. Saya memiliki klien yang perusahaannya tidak akan membiarkan SIAPA PUN dari luar mengakses servernya. Saya telah mengembangkan aplikasi dan database di mesin saya, yaitu SQL 2008. Sayangnya, mesin target di klien adalah SQL 2005. Setelah banyak penelitian, saya menemukan bahwa Anda tidak bisa hanya menggunakan metode biasa untuk mentransfer seluruh database sambil menurunkan versi seperti ini. Oleh karena itu, saya harus membuat skrip untuk menangani semuanya - termasuk populasi data. - person Loki70; 15.07.2011
comment
Jadi seseorang di dalam perusahaan harus menerapkan aplikasi Anda? Sudahkah Anda mempertimbangkan untuk menginstal SQL 2005, menyiapkan database, dan kemudian mengirimkan file cadangan untuk dipulihkan? Anda setidaknya harus mengembangkan versi database yang sama dengan klien Anda. - person Pondlife; 18.07.2011
comment
Poin bagus, tapi sekali lagi, ini lebih rumit dari itu. Bagian dari proyek saya adalah memigrasi database MS Access yang ada ke SQL. Tanpa menjelaskan secara detail, database Access itu RUMIT dan memasukkannya ke dalam SQL (melalui paket SSIS yang saya tulis) cukup menantang. Karena saya tidak ingin mencoba dan menulis ulang paket SSIS ini pada tahun 2005, saya terjebak saat mencoba mengubah database tahun 2008 saya menjadi database tahun 2005. - person Loki70; 18.07.2011
comment
Jadi bisakah Anda menggunakan paket SSIS 2008 untuk mengisi database tahun 2005? Agaknya Anda memiliki semua DDL di bawah kendali sumber, jadi seharusnya cukup mudah untuk membuat database kosong tahun 2005 (Anda tidak dapat menggunakan fitur khusus tahun 2008 karena targetnya adalah tahun 2005). Kemudian gunakan paket SSIS Anda yang sudah ada tetapi ubah tujuannya saja. Tentu saja, hal ini mungkin masih tidak realistis; hanya Anda yang mengetahui situasi Anda dengan cukup baik untuk mengatakan apa yang bisa berhasil. - person Pondlife; 19.07.2011