Bir SQL Server 2012 veritabanı ve 3 milyon satır ve belki de 50 sütun içeren bir tablo olacak. Katılımsız bir arka plan .net işleminin (belki de bazı SQL veya Powershell komutlarını verir) bir metin dosyasına, her veri satırı için bir satır dışa aktarmanın en hızlı yolu nedir? .Net işlemi dışa aktarmanın ne zaman tamamlandığını veya herhangi bir hata olup olmadığını bilmelidir. Veri türü tümü int
veya olacaktır nvarchar
.
Bir select *
komut yürütmek ve datareader üzerinde döngü ve her kayıt için bir dosyaya yazma için saf bir C # kodu yavaş olacağını varsayalım ve bunu paralel olabilir hiçbir yolu yoktur.
İdeal olarak dışa aktarma, SQL Server makinesindeki yerel bir klasöre değil, uzak bir paylaşılan ağ klasörüne yapılacaktır. SQL Server bir HA kümesi olacaktır. SSIS bunun için daha uygun mudur, veri dönüşümü gerekmez mi?
.Net işlemi, Makine A, Makine B üzerindeki SQL Server üzerinde çalışacak ve nihai dosya hedefi bir ağ paylaşımı olacaktır. Bir seçenek SQL sunucusunun dosyayı doğrudan ağ paylaşımına yazmasıdır. Diğer seçenek, SQL Server'ın A makinesine yazması ve ardından dosya yazıldığında .net işleminin ağ paylaşımına kopyalamasıdır. Ben resmi SLA yok ama dosya yazma için 1 saat - 30 dakika bekliyor.
"Ideally the export will be to a remote shared network folder and not a local folder on the SQL Server machine."
- .NET uygulaması nereden çalışacak? En kötü ihtimalle, bu, verilerin muhtemelen en büyük darboğaz olacak 2 ağ şeridi boyunca hareket etmesi gerektiği anlamına gelebilir. Ayrıca, satır sayısı biraz alakasız - yaklaşık toplam veri boyutu nedir? Bu işlem için karşılamanız gereken bir performans SLA'nız var mı?