我在想如何在同一时间进行批量插入和批量复制?我有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