Я пытаюсь найти самый быстрый способ вывода результатов XML на диск из SQL Server. Это должно быть автоматизировано и быстро, так как нужно обработать тысячи записей.
Это варианты, которые мне известны:
- sp_OACreate & sp_OAMethod
- xp_cmdshell & osql.exe
- Пакет служб SSIS
- Сборка DLL (класс SQLBulkCopy из .NET)
- утилита BCP
В настоящее время используется первая опция (sp_OACreate & sp_OAMethod) для создания нового файла для каждого результата. В моей среде клиентская статистика показывает, что для выполнения и генерации одного файла требуется 374 миллисекунды (почти ничего).
Я наткнулся на одну статью, в которой сравнивается использование sp_OACreate & sp_OAMethod с другими подходами, и это намного медленнее. Однако он не сравнивает производительность для BCP, SSIS, DLL или других подходов.
https://www.sqlservercentral.com/articles/writing-to-a-file-using-the-sp_oacreate-stored-procedure-and-osql-the
Был бы полезен список тестов для каждого варианта, но я не могу найти эту информацию в Интернете. Мой последний вариант - реализовать и протестировать каждый вариант, чтобы увидеть, какой из них самый быстрый, но я надеюсь, что у кого-то есть какая-то информация.