在生产应用程序中使用SqlBulkInsert

PCG*_*PCG 3 c# sql database bulkinsert sqlbulkcopy

我们目前正在开发一个应用程序,它为每个用户会话在特定表中生成超过5-10,000行数据.目前我们使用sql text命令一次插入每行数据,因此保存操作可能需要一分钟.我们正在使用SqlBulkInserts并且已经看到时间下降到不到500ms.有没有人对在许多用户将使用该系统的生产应用程序中使用SqlBulkInserts有任何异议?

jus*_*nne 6

我从未遇到过使用tableLock选项设置SqlBulkCopy的问题,而另一个用户因此被阻止.TableLock选项可以提高插件的效率,而不是很多人所说的,只是简单地使用它就可以看到我.

我的典型方法:

public void Bulk(String connectionString, DataTable data, String destinationTable)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlBulkCopy bulkCopy =
            new SqlBulkCopy
            (
            connection,
            SqlBulkCopyOptions.TableLock |
            SqlBulkCopyOptions.FireTriggers |
            SqlBulkCopyOptions.UseInternalTransaction,
            null
            ))
        {
            bulkCopy.BatchSize = data.Rows.Count;
            bulkCopy.DestinationTableName = String.Format("[{0}]", destinationTable);
            connection.Open();
            bulkCopy.WriteToServer(data);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)