SqlBulkCopy模拟延迟

时间:2011-11-02 18:11:23

标签: c# sql sql-server-2008 ado.net

我想使用SqlBulkCopy将数据批量加载到SQL 2008表中。我计划从多个客户端并行加载数据。

但是我想模拟加载数据的延迟,以便我可以检查数据库中的锁并检查并发问题。我通常使用Thread.Sleep()来模拟一个长时间运行的进程,但我不确定它是否使用SQLBulkCopy。

 using (SqlBulkCopy s = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.TableLock))
{


s.DestinationTableName = "HoldTable";    
s.WriteToServer(dataTable);    
System.Threading.Thread.Sleep(1000000);    
s.Close();
}

1 个答案:

答案 0 :(得分:0)

默认情况下,SqlBulkCopy.WriteToServer在事务外运行。这意味着它将在WriteToServer函数返回之前释放任何锁。 Sleep期间不会有任何数据库锁定。

您可以通过指定third parameterSqlBulkCopy的构造函数来使用事务。请参阅this MSDN article for examples

事务保持锁定,直到您提交它为止。因此,如果您在提交之前放置Sleep,则应该进行有用的模拟。