SQLCMDを使用して、データベースでストアドプロシージャを実行するプロセスを自動化しようとしています。SQL Server Management Studio 2008は、これがすべて実行されようとしているWindows Serverにインストールされます。SQLCMDはバッチスクリプトを介して呼び出され、ストアドプロシージャを実行し、出力をXMLファイルに保存するように指示されます。ストアドプロシージャには機密情報が含まれているため表示できませんが、FOR XML PATH('')の使用法が含まれています。
私はあらゆる種類のサイトからいくつかの記事を読みましたが、人々は:XML ONを使用して、表形式ではなく実際のXML形式で出力を取得し、「-h-1-y0」のスイッチを使用して確認するように言っています。出力が切り捨てられないこと。すべてを自動化できるように、バッチスクリプトを介して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のように見せ、切り捨てられないようにするにはどうすればよいですか?
よろしくお願いします!