Запустите SQLCMD с помощью Batch Script, чтобы создать отформатированный XML-файл из хранимой транзакции

Я пытаюсь автоматизировать процесс запуска хранимой процедуры в базе данных с помощью 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 в транзакции, а также создать отдельный 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, а также не усекался?

Большое спасибо заранее!

Этот подход работает для меня. Я извлек 2 milion строки xml usinq sqlcmd из столбца xml. Мои шаги:

1) Создать файл с запросом, это мое:

 :XML ON USE <DB_NAME> SELECT TOP 1 <COLUMN_NAME> FROM <TABLE> WHERE <SOMETHING> FOR XML PATH('') 

2) Выполнить команду в sqlcmd

 sqlcmd -d <DB_NAME> -i <PATH>\query.sql >result.txt 

И замените то, что вам нужно в <>

В вашем случае вы храните процедуру. Может быть, это вызовет проблемы? Но вы можете попробовать что-то вроде:

 USE<DB_NAME> DECLARE @XMLV XML EXEC @XMLV = EXEC StoredProcedure SELECT @XMLV FOR XML PATH('') 

Я знаю, что вопрос довольно старый, но, возможно, это поможет кому-то.

 SELECT ( SELECT 'White' AS Color1, 'Blue' AS Color2, 'Black' AS Color3, 'Light' AS 'Color4/@Special', 'Green' AS Color4, 'Red' AS Color5 FOR XML PATH('Colors'), TYPE ), ( SELECT 'Apple' AS Fruits1, 'Pineapple' AS Fruits2, 'Grapes' AS Fruits3, 'Melon' AS Fruits4 FOR XML PATH('Fruits'), TYPE ) FOR XML PATH(''), ROOT('SampleXML') GO 
  • Сгенерировать и объединить FOR XML AUTO
  • SQL xml объединяет значения первой строки с остальными строками
  • XML-измельчение SQL Server слишком медленное
  • Запрос на вывод содержимого столбца AllXml таблицы сервера ELMAH_Error sql
  • получить значение атрибута дочернего узла XML, где условие на родительском узле
  • XQuery существует проверка в select sql query
  • SQL Server 2005 XML для таблицы
  • Вложенные элементы XML XML
  • Вставка атрибута в несколько XML-узлов с использованием XML.modify () в SQL 2005
  • Вставить узлы XML в порядке, определенном структурой XML
  • Можно ли использовать столбец XML для хранения дополнительных данных?
  • Interesting Posts

    Манипулировать координаты Lat / Lng для карт google

    Удалить запрос для удаления данных из нескольких таблиц в sql-сервере и c #

    Имейте необязательный параметр в хранимой процедуре

    Как найти дубликаты записей в SQL?

    Подключение к базе данных SQL с использованием только Ajax?

    Как проверить идентификаторы родителей и затем установить значение

    Вставить изображение в SQL Server

    Подсчет звонков по получасовым интервалам

    Объединение несвязанных запросов в один запрос для создания счетчиков

    Как добавить пробел в каждые 2 символа, а затем 4 символа внутри строки в sql

    Вставить sql_variant в data_type, предоставленный как varchar

    Как создавать вставки?

    показать нулевые значения, которые не совпадают с другим табличным сервером sql

    Процедура SQL SERVER Несогласованная производительность

    Ошибка экспресс-установки SQL Server 2016: попытка выполнить несанкционированную операцию

    Давайте будем гением компьютера.