2012-03-15 2 views
0

私は次のコードを持っています。トランザクションとイベントを発生させるためにnotifyAfterプロパティを使用できるかどうかをテストするために使用しています(既に、自分自身を上げるが、すべての行がコピーされた後にのみ上がります)。次のリンクはsqlbulkcopy with notifyafterとトランザクション

MSDN

その可能性はないことを示唆している誰もがこれでの経験がありましたか?トランザクションは、したがって、あなたがその後まで上げイベントを取得することはありませんコミットされた後おかげ

私が原因の取引の推測です
  using (SqlConnection connection = new SqlConnection(connectionString)) 
      { 
       connection.Open(); 
       { 
         try 
         { 
          using (SqlBulkCopy copy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity |SqlBulkCopyOptions.UseInternalTransaction)) 

          { 
           //Column mapping for the required columns. 
           for (int count = 0; count < numberOfColumns; count++) 
           { 
            copy.ColumnMappings.Add(count, count); 
           } 

           //SQLBulkCopy parameters. 
           copy.DestinationTableName = dataTableName; 
           copy.BatchSize = batchSize; 

           copy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); 
           copy.NotifyAfter = 5; 

           copy.WriteToServer(fullDataTable); 
          } 
         } 
         //Error(s) occured while trying to commit the transaction. 
         catch (InvalidOperationException transactionEx) 
         { 
          //uploadTransaction.Rollback(); 
          status = "The current transaction has been rolled back due to an error. \n\r" + transactionEx.Message; 
          MessageBox.Show(status, "Error Message:"); 
          alreadyCaught = true; 
          throw; 
         } 
       } 

答えて

0

は、処理にのみ発生します。

+0

上記のコードはイベントを発生させます。バッチサイズを10に設定し、NotifyAfterプロパティを5に設定すると、イベントが発生します。初めて= DBには何もありません。 2行目= 10行、すべての行が追加されるまで続きます。だから私はトランザクションが動作していないと仮定していますが、これをテストする方法はわかりません。ご協力いただきありがとうございます。 –

関連する問題