使用SQLXMLBulkLoad,获取异常,因为列不接受NULL值

时间:2012-07-18 20:10:29

标签: sql-server-2005 exception vb.net-2010 sqlxml bulk-load

我正在尝试使用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来解决它。但是,当我尝试这个时,我收到一个错误“无法批量加载,因为文件”这是一个本地临时文件“无法打开。”

1 个答案:

答案 0 :(得分:0)

我正在以同样的情况为未来的用户回答这个问题。虽然不合逻辑,如果您在SQL表中设置列以接受NULL值并设置默认值=(''),那么XML文件中的空白值将变为空白而不是NULL值,您将不再收到此错误。我无法使用objBl.Transaction = True,因为我的服务器与运行应用程序执行BulkLoad()的计算机不同。这可以通过设置共享文件夹来解决,但在我的情况下它不是一个选项。因此,下一个最佳选择是做上述事情。