0

Visual Studio 2010 を使用して、VB.NET の SQLXMLBulkLoad オブジェクト モデルを使用して、XML データを SQL Server 2005 Express に一括挿入しようとしています。

値を保持していない .xml ファイル内の要素にローダーが到達すると、SQL Server の対応するテーブル列が null 値を含まないように設定されているため、エラーがスローされます。これは仕様によるものであり、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 値ではなく空白になり、このエラーは表示されなくなります。 . 私のサーバーは、アプリを実行して BulkLoad() を実行するコンピューターとは異なるコンピューターであるため、objBl.Transaction = True を使用できませんでした。これは共有フォルダーを設定することで解決できますが、私の状況ではオプションではありませんでした。したがって、次善の策は上記を実行することでした。

于 2012-07-19T16:36:36.267 に答える