我正在尝试使用Visual Studio 2010在VB.NET中使用SQLXMLBulkLoad对象模型将XML数据批量插入SQL Server 2005 Express。
当加载器到达我的.xml文件中没有值的元素时,它会抛出一个错误,因为SQL Server中相应的表列被设置为不包含空值。这是设计而不是插入NULL我需要Loader插入一个空格。我不知道该怎么做,因为这是我第一次使用BulkLoad。有什么建议吗?
error.xml文件文本:
<?xml version="1.0" ?>
<Result State="FAILED">
<Error>
<HResult>0x80004005</HResult>
<Description> <![CDATA[ No data was provided for column 'blah' on table 'blah', and this column cannot contain NULL values.]]></Description>
<Source>General operational error</Source>
<Type>FATAL</Type>
</Error>
</Result>
编辑: http://social.msdn.microsoft.com/Forums/en-US/sqlxml/thread/bfa31c49-6ae5-4a5d-bcde-cd520e0cdf70/
这个家伙遇到了和我一样的问题,并且能够通过使用objBl.Transaction = True来解决它。但是,当我尝试这个时,我收到一个错误“无法批量加载,因为文件”这是一个本地临时文件“无法打开。”
答案 0 :(得分:0)
我正在以同样的情况为未来的用户回答这个问题。虽然不合逻辑,如果您在SQL表中设置列以接受NULL值并设置默认值=(''),那么XML文件中的空白值将变为空白而不是NULL值,您将不再收到此错误。我无法使用objBl.Transaction = True,因为我的服务器与运行应用程序执行BulkLoad()的计算机不同。这可以通过设置共享文件夹来解决,但在我的情况下它不是一个选项。因此,下一个最佳选择是做上述事情。