小编Svi*_*ack的帖子

SET IDENTITY_INSERT OFF - 导致表锁定

我在如下所示的数据库上执行 SQL:

SET IDENTITY_INSERT table1 ON
GO
BEGIN TRANSACTION
GO
INSERT INTO table1 SELECT ... FROM table2
GO
DELETE FROM table2 ...
GO
COMMIT TRANSACTION
GO
SET IDENTITY_INSERT table1 OFF
GO
Run Code Online (Sandbox Code Playgroud)

问题是我的表被锁定在最后一条语句上SET IDENTITY_INSERT table1 OFF,之前的所有语句大约需要 6 个小时,但我的表现在被锁定在最后一条语句上 1 天。

在活动监视器中,它具有不执行任何命令的连接,但它是锁定链的头部阻塞器,我杀死了它,但没有任何改变,只是处于回滚状态,但它仍在消耗所有 I/O。

我的问题是这个会话在做什么以及如何避免它?由于某种原因,看起来 IDENTITY_INSERT 几乎像全表娱乐一样昂贵,我不知道这会如何导致性能方面的任何缺点。

附加信息:插入期间没有身份冲突,bcs i insert 操作的身份值低于 table1 上的初始设置

餐桌设计:

CREATE TABLE [dbo].[table1] (
    [id_table1] BIGINT     IDENTITY NOT NULL,
    [id_table3]              INT        NOT NULL,
    [some_id]    BIGINT     NOT NULL,
    [some_time2]           DATETIME2   NOT NULL,
    [some_time]            DATETIME2   NOT NULL,
    [some_value]                FLOAT …
Run Code Online (Sandbox Code Playgroud)

sql-server identity

2
推荐指数
1
解决办法
2757
查看次数

标签 统计

identity ×1

sql-server ×1