Запись XML на диск в SQL Server

Мне трудно понять, как записать XML на мой жесткий диск в SQL Server. Я понимаю, что мог бы сделать что-то вроде этого:

EXEC xp_cmdshell 'bcp "@@@INSERT SELECT/FOR XML QUERY@@@" queryout "C:\test.xml" -T -c -t'

Но мой XML-запрос SELECT/FOR занимает около 40 строк, поэтому я бы не хотел. Я попытался сохранить XML как @storedXML, сохранить его в таблице, а затем запросить эту таблицу с помощью bcp:

CREATE TABLE xmlOutput(outXML xml)
INSERT INTO xmlOutput(outXML)
VALUES (@storedXML)

DECLARE @sqlCmd VARCHAR(1000)
SET @sqlCmd = 'bcp "SELECT * FROM xmlOutput" queryout C:\test.xml -c -T -t'
EXEC xp_cmdshell @sqlCmd

Но все, что меня беспокоит, это «Невозможно открыть файл данных хоста BCP».


person Sergei Walankov    schedule 21.12.2019    source источник
comment
Вы видели этот пост: stackoverflow .com/questions/18619061/   -  person Максим Золотенко    schedule 21.12.2019
comment
Рассматривали ли вы возможность поместить свои 40 строк кода в хранимую процедуру, а затем использовать bcp "exec myDB.dbo.myProcedure" queryout "C:\test.xml" -T -c?   -  person AlwaysLearning    schedule 21.12.2019
comment
Спасибо - хранимая процедура в конце концов помогла, после того как я разобрался с дальнейшими проблемами, связанными с правами доступа к папкам. Также необходимо было указать -S и имя моего сервера/экземпляра.   -  person Sergei Walankov    schedule 23.12.2019