Как сохранить результат запроса SQL в файл XML на диске

Я хотел бы экспортировать таблицу из SQL Server 2012 в файл XML. я нашелхороший ответ а такжеВот как сделать результат XML из запроса к базе данных SQL Server, но все же мне не хватает, как физически сохранить этот результат в файл.

SQL-запрос:

SELECT [Created], [Text]
FROM [db304].[dbo].[SearchHistory]
FOR XML PATH('Record'), ROOT('SearchHistory')

Я использую Microsoft SQL Server Management Studio для выполнения этого результата. Я вижу XML в окне результатов, но не могу его сохранить.

В контекстном меню есть «Сохранить результат как…», но с 98900 строками у меня заканчивается 8 ГБ памяти с этой опцией.

Есть ли способ, как сохранить этот запрос непосредственно в файл XML на диске?

Ответы на вопрос(3)

Решение Вопроса

чтобы экспортировать их в файл XML.

Но вам нужно будет настроить сервер sql, прежде чем вы сможете его использовать.

EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE

Как только xp_cmdshel включен в SQL Server. Вы можете использовать следующую команду для экспорта данных в XML-файл.

EXEC xp_cmdshell 'bcp "SELECT [Created], [Text] FROM [db304].[dbo].[SearchHistory] FOR XML PATH(''Record''), ROOT(''SearchHistory'')" queryout "C:\bcptest.xml" -T -c -t,'
 STLDev09 июл. 2018 г., 23:51
bcp является командой SQL Bulk Copy.
 Tomas Kubes06 авг. 2016 г., 23:28
Спасибо, я могу экспортировать всю таблицу, но я не могу получить работу UTF-8. Когда я использую параметр -C65001, я получаю сообщение Ошибка = [Microsoft] [Собственный клиент SQL Server 11.0] Эта версия собственного клиента SQL Server не поддерживает кодировку UTF-8 (кодовая страница 65001). Мне нужно будет обновить до SQL Server 2016, уже есть поддержка UTF8 для этой функции.
 Sizons26 сент. 2017 г., 08:36
Здравствуйте, это как раз то, что я искал. Пожалуйста, объясните, что такое bcp для "EXEC xp_cmdshell 'bcp" SELECT [Created], "Спасибо.

я заканчиваю тем, что обновляю его до SQL Server 2014, поскольку в sqlcmd уже есть поддержка файлов SQL UTF-8.

Создайте запрос SQL и сохраните его в файл.

запустить следующее:

sqlcmd -S -U sa -P sapassword -i inputquery_file_name -C65001 -o outputfile_name

 Glorfindel13 февр. 2019 г., 11:45
Для меня было необходимо добавить-y 0 возможность убедиться, что весь XML был экспортирован, а не только первые 256 символов.

Это должно вывести результаты выполнения запроса непосредственно в файл на диске

 marc_s06 авг. 2016 г., 22:59
@ qub1n: это прискорбно ..... в этом случае, я полагаю, моя единственная альтернатива - написать небольшую C # -программу для запуска запроса, получить результаты и попытаться сохранить их на диск - возможно, сделать это порциями ( например, 1000 строк за раз или около того), чтобы избежать "OutOfMemoryException" ...
 Tomas Kubes06 авг. 2016 г., 22:57
Это то, что я искал, но, к сожалению, файл обрезан, конец файла отсутствует. :-( XML прерван внутри элемента. Но SSMS говорит: «Запрос выполнен успешно».

Ваш ответ на вопрос