我有一个以 XML 变量作为输入参数的存储过程。XML 变量的每个节点都与某个数据库表的一个 SQL 列相匹配。存储过程简单地遍历 XML 节点并将它们插入到表中。
我一直在我的存储过程中使用“OPENXML”功能来执行此操作,但我遇到了性能问题(查询最多需要 40 秒)=> SQL process XML performance: Insert into columns in a table。我想提高性能,但我不知道从哪里开始。标准 XML 函数似乎没有改进,所以我正在寻找一种替代方法。
我曾尝试使用 SSIS 包来实现此功能。因此,从我的存储过程中,我调用了一个具有字符串变量作为输入参数的 SSIS 包。我将从存储过程接收到的 XML 作为字符串传递到包中。但是我遇到了 xp_cmdshell 功能的问题。它只允许最多 8000 个字符的命令。这是代码的样子:
--Execution SSIS Package
DECLARE @Command varchar(8000)
, @PackageLocation varchar(1000)
, @PackageName varchar(1000)
SET @PackageLocation = 'C:\SSIS\Package.dtsx'
SET @Command = 'dtexec /f "' + @PackageLocation + '" /set \package.Variables[Xmldata].Value;"' + @datastring + '"'
EXEC @ExitCode = xp_cmdshell @Command
问题是 @datastring 变量可能超过 8000 个字符,因此命令失败。知道如何解决这个问题吗?或者也许其他替代方案来完成此功能?
谢谢。
此致,