0

我正在尝试使用 Visual Studio 2010 在 VB.NET 中使用 SQLXMLBulkLoad 对象模型将 XML 数据批量插入 SQL Server 2005 Express。

当加载器访问我的 .xml 文件中不包含值的元素时,它会引发错误,因为 SQL Server 中的相应表列设置为不包含空值。这是设计使然,而不是插入 NULL 我需要加载程序插入一个空格。我不知道该怎么做,因为这是我第一次使用 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 来解决它。但是,当我尝试这样做时,我收到“无法批量加载,因为文件“这是一个本地临时文件”无法打开”的错误消息。

4

1 回答 1

0

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

于 2012-07-19T16:36:36.267 回答