我在想如何在同一時間進行批量插入和批量複製?我有2個表應該受到大容量複製的影響,因爲它們都相互依賴。關於SQl BulkCopy的問題
所以我希望它,如果當插入表1一個記錄死亡它會回滾和表2永遠不會得到更新。此外,如果表1插入好,表2更新失敗,表1將回滾。
這可以通過批量複製來完成嗎?
編輯
我應該提到我做的雖然C#中的批量插入。
它看起來像這樣,但這是我一直在努力的一個例子。所以,我不知道如果我要改變它是一個存儲過程(不知道它會如何看待和C#代碼是什麼樣子)
private static void BatchBulkCopy()
{
// Get the DataTable
DataTable dtInsertRows = GetDataTable();
using (SqlBulkCopy sbc = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
{
sbc.DestinationTableName = "TBL_TEST_TEST";
// Number of records to be processed in one go
sbc.BatchSize = 500000;
// Map the Source Column from DataTabel to the Destination Columns in SQL Server 2005 Person Table
// sbc.ColumnMappings.Add("ID", "ID");
sbc.ColumnMappings.Add("NAME", "NAME");
// Number of records after which client has to be notified about its status
sbc.NotifyAfter = dtInsertRows.Rows.Count;
// Event that gets fired when NotifyAfter number of records are processed.
sbc.SqlRowsCopied += new SqlRowsCopiedEventHandler(sbc_SqlRowsCopied);
// Finally write to server
sbc.WriteToServer(dtInsertRows);
sbc.Close();
}
}
對不起,我應該提到,我正在通過C#代碼完成此操作。所以我不確定我如何做你所展示的。它們是外鍵約束,但是當我說相互依賴時,我的意思是表2已經被填充,但是當插入發生時,我希望表2中的記錄進入激活狀態(這是用於許可證,本質上是發生了什麼)獲取用戶列表,他們每個都獲得一個已經在數據庫中的密鑰,但設置爲非活動狀態,所以我想在此時將其更改爲活動狀態)。 – chobo2 2010-05-20 23:41:21