SQL Broker
&
SQL CLR
推出大型
XML
发送到我的企业服务总线(ESB),供消费者提取和处理。为了“审计”OUTGOINGXML(我匹配它),使用服务总线接收的XML(通过将两者保存到表中)。
保存大型XML集很容易……没有问题。但是,当我对LARGE XML值使用HASHBYTES时,我得到了以下错误:
奇怪地
-
转换为VACHAR(MAX)不是问题所在
-
使用HASHBYTES是失败的
目标:
样品测试仪:
在这个问题中插入LARGE XML太麻烦了,所以我包括了一个复制该问题的迷你脚本:
DECLARE @ContextCount INT = 1000;
----------------
---- Build the LARGE XML
----------------
DECLARE @Count INT = 1;
DECLARE @Xml NVARCHAR(MAX) = '<Contexts>';
WHILE (@Count <= @ContextCount)
BEGIN
SET @Xml = @Xml + '<Context><Name>SomeTableName</Name><Key><SomeColumnName>' + CONVERT(VARCHAR(10), @Count) + '</SomeColumnName></Key></Context>'
SET @Count = @Count + 1
END
SET @Xml = @Xml + '</Contexts>'
----------------
---- Build the LARGE XML
----------------
-- THIS WORKS
SELECT CONVERT(VARCHAR(MAX), @Xml)
-- THIS FAILS
SELECT HASHBYTES('MD5', CONVERT(VARCHAR(MAX), @Xml));