SQL Server Integration Services 2005 中似乎存在一个错误,在某些情况下,它将零长度字符串转换为单个字符串,其字符恰好是 ansi null,即。ascii 字符零(请注意,这与 sql null 非常不同)。
这发生在我们的一个数据加载过程中,因此应该为空的地址行将这些字符放入其中。
我们通过 Web 服务公开这些数据,并且数据可以序列化。当通过 IE 查看 Web 服务响应时,标准 XSL 甚至会去除空值,但是当您查看源代码时,您可以看到它们:
Addr2="�"
但是,当您从 .Net 生成的代理调用此服务时,您会收到错误消息:
"There is an error in XML document"
这可能是因为 null 终止了文档并因此使其无效。
虽然我们可以尽最大努力防止这些值进入数据库,但是当这些值在响应中时,有什么方法可以防止代理代码出错?我们真的不想在我们所有的网络方法中添加代码来检测和删除这些。