2010-12-26 40 views
23

私はSqlBulkCopyを使用してxmlバックアップからテーブルを復元しています。テーブルバックアップの1つは〜200MBの大きさで、多くのレコードがあります。タイムアウトがSqlBulkCopyで期限切れになった

私がいるエラー:あなたはおそらく、タイムアウトを増やす必要が

Timeout expired. 
The timeout period elapsed prior to completion of the operation or the server 
is not responding. 

答えて

31

sqlBulkCopy.BulkCopyTimeoutの値を30秒のデフォルト値から増やしてみてください。

+9

1つのバッチ内のすべての行を挿入しようと、デフォルトで

sqlBulkCopy.BulkCopyTimeout = {time in seconds} 
  • 減少のBatchSizeは無限大を意味します。 –

  • +4

    解決に感謝します。また、sqlBulkCopy.BatchSizeを減らしてテストしました。 –

    4

    SqlCommandオブジェクトのCommandTimeoutプロパティを変更します。

    接続文字列の接続タイムアウト属性は、SqlConnectionオブジェクトがサーバーへの接続の試行を停止するまでの時間を決定します。

    SqlBulkCopy.BulkCopyTimeoutプロパティも変更してください。

    27

    このエラーを修正するには、2つの方法があります。デフォルトで

    • 増加タイムアウトはそれが30秒で、0は無限の意味は。それは0からTimeOutの

      sqlBulkCopy.BatchSize = {no of rows you want to insert at once} 
      

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.batchsize.aspx http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.bulkcopytimeout.aspx

    +2

    参照:「SqlBulkCopyの推奨バッチサイズは?」 http://stackoverflow.com/questions/779690/what-is-the-recommended-batch-size-for-sqlbulkcopy –

    関連する問題