Saya akan memiliki database SQL Server 2012 dan tabel dengan 3 juta baris dan mungkin 50 kolom. Apa yang akan menjadi cara tercepat untuk proses .net tanpa dijaga latar belakang (mungkin mengeluarkan beberapa perintah SQL atau Powershell) untuk mengekspornya ke file teks, satu baris untuk setiap baris data? Proses .net harus tahu kapan ekspor telah selesai atau jika ada kesalahan. Tipe data akan semua int
atau nvarchar
.
Saya mengasumsikan bahwa kode C # murni menggunakan ado.net untuk menjalankan select *
perintah dan mengulang datareader dan menulis ke file untuk setiap catatan akan lambat dan tidak ada cara saya bisa memparalelkan ini.
Idealnya ekspor akan ke folder jaringan bersama jarak jauh dan bukan folder lokal pada mesin SQL Server. SQL Server akan menjadi cluster HA. Apakah SSIS lebih cocok untuk ini, tidak perlu transformasi data?
Proses .Net akan berjalan pada Mesin A, SQL Server pada Mesin B dan tujuan file akhir adalah berbagi jaringan. Salah satu opsi adalah SQL server menulis file langsung ke jaringan berbagi. Opsi lainnya adalah SQL Server menulis ke mesin A dan kemudian ketika file ditulis proses .net menyalinnya ke jaringan berbagi. Saya tidak memiliki SLA formal tetapi mengharapkan 30 menit - 1 jam untuk file tulis.
"Ideally the export will be to a remote shared network folder and not a local folder on the SQL Server machine."
- dari mana aplikasi .NET dijalankan? Kasus terburuk, ini bisa berarti data harus bergerak melalui 2 jaringan hop, yang mungkin akan menjadi hambatan terbesar. Juga, jumlah baris agak tidak relevan - berapakah perkiraan ukuran total data? Apakah Anda memiliki SLA kinerja yang harus Anda penuhi untuk proses ini?