Я пытаюсь автоматизировать процесс запуска хранимой процедуры в базе данных с помощью SQLCMD. SQL Server Management Studio 2008 установлен на Windows Server, в котором все это пытается произойти. SQLCMD будет вызываться через пакетный сценарий, и ему будет предложено выполнить хранимую процедуру и сохранить вывод в файл XML. Я не могу показать хранимую процедуру, так как она содержит конфиденциальный материал, но включает использование FOR XML PATH('').
Я прочитал несколько статей со всевозможных сайтов, и люди говорили, что используют :XML ON для получения вывода в реальном формате XML, а не в табличном формате, а также переключатели «-h-1 -y 0», чтобы убедиться что вывод не усекается. Я пытаюсь запустить SQLCMD через пакетный скрипт, чтобы все это можно было автоматизировать.
Мой текущий пакетный скрипт (все переменные определены перед этой строкой в скрипте):
sqlcmd -X -Q -h-1 -y 0 "EXEC %TransactionName%" -d %Database% -S %ServerInstance% -o "%OutFilename%_%currDATE%.xml"
Я попытался добавить :XML ON в транзакцию, а также создать отдельный скрипт SQL, который гласит:
Run_Transact.sql
:XML ON
EXEC storedProcedure
и поэтому командный файл будет читать:
sqlcmd -X -Q -h-1 -y 0 -i runTransact.sql -d %Database% -S %ServerInstance% -o "%OutFilename%_%currDATE%.xml"
Я возвращаю ошибку:
HResult 0x80004005, уровень 16, состояние 1 Описание не предоставлено
Если я не использую :XML ON, то я получаю вывод, который выглядит так, как будто он в табличном формате, и он включает заголовок, а также только первую запись, но не всю ее (она усекается).
Мой вопрос: как я могу получить вывод в файле XML, чтобы он действительно выглядел как XML, а не усекался?
Большое спасибо заранее!