2012-07-18 89 views
0

我想批量插入XML数据到SQL Server 2005 Express的与VB.NET SQLXMLBulkLoad对象模型中使用Visual Studio 2010中使用SQLXMLBulkLoad,越来越异常,因为列不接受NULL值

当装载机得到到我的.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 =真正。但是,当我尝试时,我收到一个错误,“无法批量加载,因为文件”This is Local Temp File“无法打开。”

回答

0

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