- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在做大容量插入时遇到了可怕的问题。我实际上是在使用 SqlBulkCopy 将多行插入到一个表中。起初,我会得到一个超时异常。因此,我将 SqlBulkCopy 的 BulkCopyTimeout 设置为荒谬的 [?] 1800 秒。不会抛出异常(还)。因此,我检查了 MS Server 管理工作室的事件监视器(如此处所建议的: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated ),看到我的 BULK INSERT 的任务状态被挂起,等待类型为 LCK_M_RIn_LN。我的代码是这样的:
Using sqlCon As SqlConnection = connection.Connect()
Dim sqlBulkCopy As New SqlBulkCopy(sqlCon, SqlBulkCopyOptions.CheckConstraints And
SqlBulkCopyOptions.FireTriggers And
SqlBulkCopyOptions.KeepNulls And
SqlBulkCopyOptions.KeepIdentity, sqlTran)
sqlBulkCopy.BulkCopyTimeout = 1800 ' is this ridiculous?
sqlBulkCopy.BatchSize = 1000
sqlBulkCopy.DestinationTableName = destinationTable
sqlBulkCopy.WriteToServer(dataTableObject)
sqlTran.Commit()
End Using
Occurs when a task is waiting to acquire a NULL lock on the current key value, and an Insert Range lock between the current and previous key. A NULL lock on the key is an instant release lock. For a lock compatibility matrix, see sys.dm_tran_locks (Transact-SQL).
insert bulk TableName ([ColumnName] Int)
最佳答案
我在尝试从 Java 批量插入时遇到了类似的问题,但等待类型为 ASYNC_NETWORK_IO
例如
+-----------+-------+-------------+---------+--------+----------------+--------------------------------------+
| Status | BlkBy | Command | CPUTime | DiskIO | LastBatch | ProgramName |
+-----------+-------+-------------+---------+--------+----------------+--------------------------------------+
| SUSPENDED | . | BULK INSERT | 15 | 4 | 09/16 02:42:04 | Microsoft JDBC Driver for SQL Server |
+-----------+-------+-------------+---------+--------+----------------+--------------------------------------+
很难说确切的问题是什么,我观察到了一些事情:
+------------+------+----------+----------+----------+
| batch size | rows | start | end | duration |
+------------+------+----------+----------+----------+
| 100 | 2500 | 09:15:45 | 09:18:17 | 00:02:32 |
| 1000 | 2500 | 09:23:34 | 09:25:35 | 00:02:00 |
| 2500 | 2500 | 09:32:53 | 09:34:55 | 00:02:01 |
| 2500 | 7500 | 10:27:18 | 10:30:49 | 00:03:31 |
| 7500 | 7500 | 10:38:10 | 10:45:57 | 00:07:47 |
+------------+------+----------+----------+----------+
关于sql - 使用等待类型 LCK_M_RIn_LN 暂停批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17856948/
我在做大容量插入时遇到了可怕的问题。我实际上是在使用 SqlBulkCopy 将多行插入到一个表中。起初,我会得到一个超时异常。因此,我将 SqlBulkCopy 的 BulkCopyTimeout
我是一名优秀的程序员,十分优秀!