C# SqlBulkCopy模拟延迟
我想使用SqlBulkCopy将数据大容量加载到SQL2008表中。我计划从多个客户端并行加载数据 但是,我希望模拟加载数据的延迟,以便检查数据库中的锁和并发性问题。我通常使用Thread.Sleep()来模拟长时间运行的进程,但我不确定它是否与SQLBulkCopy一起工作C# SqlBulkCopy模拟延迟,c#,sql,sql-server-2008,ado.net,C#,Sql,Sql Server 2008,Ado.net,我想使用SqlBulkCopy将数据大容量加载到SQL2008表中。我计划从多个客户端并行加载数据 但是,我希望模拟加载数据的延迟,以便检查数据库中的锁和并发性问题。我通常使用Thread.Sleep()来模拟长时间运行的进程,但我不确定它是否与SQLBulkCopy一起工作 using (SqlBulkCopy s = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.TableLock)) { s.DestinationTable
using (SqlBulkCopy s = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.TableLock))
{
s.DestinationTableName = "HoldTable";
s.WriteToServer(dataTable);
System.Threading.Thread.Sleep(1000000);
s.Close();
}
默认情况下,
SqlBulkCopy.WriteToServer
在事务外部运行。这意味着它将在WriteToServer
函数返回之前释放所有锁。在睡眠期间将不会有任何数据库锁定
您可以通过指定toSqlBulkCopy
的构造函数来使用事务。看
事务将保持其锁,直到您提交它为止。因此,如果您在提交之前放置睡眠
,您应该有一个有用的模拟。它不是模拟延迟,而是延迟。你想做什么,让这个过程比需要的时间长15分钟?@Ben显然我不会让System.Threading.Thread.Sleep(1000000)在实际实现中,它只是用来测试“模拟”bulkimport花费了很长时间,但似乎无法工作WriteToServer(dataTable)似乎在一次调用中打开并提交了事务,我无法钩住线程。请在睡眠之间看一下。您可以在C#事务中运行WriteToServer
。