使用 SQLCMD 从存储过程保存 XML 时出现问题
Issue when using SQLCMD to save XML from stored procedure
我是 运行 一个存储过程,它生成单个 XML 列,我想将其保存为来自 sqlcmd
的 XML 文件。
我遇到的问题是 XML 的格式不正确,例如,如果 XML 元素中有很多信息,它会在所有信息完成之前被切断进入元素。
另一个问题是整个 XML 文件本身不够长。我有大约 26000 行需要放入 XML 文件中,而我 运行.
只有大约 600 行被放入其中
这是我的存储过程运行:
CREATE PROCEDURE usp_MyProc
AS
;WITH XMLNAMESPACES( 'Products' AS p )
SELECT
ProductID
, ProductName
, Photo
, Price
, Attribute1 AS [p:attribute/@name]
, ISNULL( p.Attribute1Value, '' ) AS [p:attribute]
, ''
, Attribute2 AS [p:attribute/@name]
, ISNULL( Attribute2Value, '' ) AS [p:attribute]
, ''
, Attribute3 AS [p:attribute/@name]
, ISNULL( Attribute3Value, '' ) AS [p:attribute]
, ''
, Attribute4 AS [p:attribute/@name]
, ISNULL( Attribute4Value, '' ) AS [p:attribute]
, ''
FROM MyDatabase.dbo.MyTable
FOR XML PATH( 'Item' ), ROOT( 'Products' )
这是我在命令提示符下 运行 的 SQLCMD:
sqlcmd -S "MyServer" -d "MyDatabase" -E -Q "EXEC usp_MyProc" -o "C:\temp\Test.xml" -W
我在一些地方读到 :XML ON
会解决这个问题,但我已经把它放在存储过程和 SQLCMD
中,但它无法识别它。
感谢任何帮助。
我已经弄明白了。我使用带有查询的输入文件来生成 XML,然后将输出文件另存为 XML 文档。
输入文件以:XML ON USE [MyDatabase]
开头然后查询到return XML.
在 SSMS 中,这显示为不正确的语法,但当它通过命令提示符运行时,它工作正常
sqlcmd -S "ServerName" -d "DatabaseName" -i "C:\Temp\xmltest.sql" -o "C:\temp\results.xml"
我是 运行 一个存储过程,它生成单个 XML 列,我想将其保存为来自 sqlcmd
的 XML 文件。
我遇到的问题是 XML 的格式不正确,例如,如果 XML 元素中有很多信息,它会在所有信息完成之前被切断进入元素。
另一个问题是整个 XML 文件本身不够长。我有大约 26000 行需要放入 XML 文件中,而我 运行.
只有大约 600 行被放入其中这是我的存储过程运行:
CREATE PROCEDURE usp_MyProc
AS
;WITH XMLNAMESPACES( 'Products' AS p )
SELECT
ProductID
, ProductName
, Photo
, Price
, Attribute1 AS [p:attribute/@name]
, ISNULL( p.Attribute1Value, '' ) AS [p:attribute]
, ''
, Attribute2 AS [p:attribute/@name]
, ISNULL( Attribute2Value, '' ) AS [p:attribute]
, ''
, Attribute3 AS [p:attribute/@name]
, ISNULL( Attribute3Value, '' ) AS [p:attribute]
, ''
, Attribute4 AS [p:attribute/@name]
, ISNULL( Attribute4Value, '' ) AS [p:attribute]
, ''
FROM MyDatabase.dbo.MyTable
FOR XML PATH( 'Item' ), ROOT( 'Products' )
这是我在命令提示符下 运行 的 SQLCMD:
sqlcmd -S "MyServer" -d "MyDatabase" -E -Q "EXEC usp_MyProc" -o "C:\temp\Test.xml" -W
我在一些地方读到 :XML ON
会解决这个问题,但我已经把它放在存储过程和 SQLCMD
中,但它无法识别它。
感谢任何帮助。
我已经弄明白了。我使用带有查询的输入文件来生成 XML,然后将输出文件另存为 XML 文档。
输入文件以:XML ON USE [MyDatabase]
开头然后查询到return XML.
在 SSMS 中,这显示为不正确的语法,但当它通过命令提示符运行时,它工作正常
sqlcmd -S "ServerName" -d "DatabaseName" -i "C:\Temp\xmltest.sql" -o "C:\temp\results.xml"