XML列未更新,未给出错误

时间:2012-06-27 20:20:12

标签: xml sql-server-2008

我正在编写一个脚本来将行插入到包含XML列的SQL Server 2008数据库数据表中。要插入的XML采用连接字符串的形式,因此insert语句如下所示:

insert into mytable (id, xmldata) values (100, '<DATA>...<VALUE>' + 
@varcharvariable + '</VALUE>...</DATA>');

(1 row(s) affected)

XML数据的长度在1000到9000个字符之间,具体取决于要插入的行。这通常可以正常工作,但偶尔会将null插入xmldata而不是XML。 SSMS没有显示插入过程中发生的任何错误,它只是默默地用null替换XML数据。如果我尝试返回并手动更新此值,则会发生同样的事情:

update mytable set xmldata = '<DATA>...<VALUE>' + @varcharvariable + 
'</VALUE>...</DATA>' where id = 100;

(1 row(s) affected)

但是当在数据表中查看该行时,xmldata仍然返回null。为了进一步增加我的困惑,这个问题在某些数据库上不会发生,但在使用完全相同的查询时会在其他数据库上发生同样的行。

在某些时候我读到这可能与内存问题有关(我找不到页面了,所以我不记得具体内容)。提到将CAST(''作为VARCHAR(MAX))预先添加到XML的网页将确保为查询分配足够的内存以按预期运行。这实际上工作了一段时间,但今天我又遇到了这个问题并且添加这个还不够。这将是更新的查询的示例:

update mytable set xmldata = CAST('' as VARCHAR(MAX)) + 
'<DATA>...<VALUE>' + @varcharvariable + '</VALUE>...</DATA>' 
where id = 100;

有谁知道是什么原因导致此更新无声地失败或我如何解决此问题?

0 个答案:

没有答案