У меня будет база данных SQL Server 2012 и таблица с 3 миллионами строк и, возможно, 50 столбцами. Каков будет самый быстрый способ для автоматического фонового процесса .net (может быть, с помощью какой-нибудь команды SQL или Powershell) экспортировать его в текстовый файл, по одной строке для каждой строки данных? Процесс .net должен знать, когда экспорт завершен или произошла какая-либо ошибка. Тип данных будет все int
или nvarchar
.
Я предполагаю, что чистый код C #, использующий ado.net для выполнения select *
команды и циклический перебор данных для чтения данных и запись в файл для каждой записи, будет медленным, и я не могу распараллелить это.
В идеале экспорт должен осуществляться в удаленную общую сетевую папку, а не в локальную папку на компьютере с SQL Server. SQL Server будет кластером высокой доступности. Подходит ли для этого SSIS, преобразование данных не требуется?
Процесс .Net будет выполняться на компьютере A, SQL Server на компьютере B, а конечным пунктом назначения файла является сетевой ресурс. Одним из вариантов является то, что SQL-сервер записывает файл непосредственно в общий сетевой ресурс. Другой вариант - SQL Server выполняет запись на компьютер A, а затем, когда файл записывается, процесс .net копирует его в общий сетевой ресурс. У меня нет официального SLA, но я ожидаю 30 минут - 1 час для записи файла.
"Ideally the export will be to a remote shared network folder and not a local folder on the SQL Server machine."
- откуда будет работать приложение .NET? В худшем случае это может означать, что данные должны проходить через 2 сетевых перехода, что, вероятно, станет самым большим узким местом. Кроме того, количество строк несколько не имеет значения - каков приблизительный общий размер данных? У вас есть соглашение об уровне обслуживания, которое вам нужно для этого процесса?