会话结束时identity_insert是否重置为OFF?

时间:2018-02-08 13:51:54

标签: sql-server tsql identity-insert

SQL服务器问题。虽然我的测试说“是”,但我宁愿从有经验的人那里听到它。

当我使用SET IDENTITY_INSERT some_table ON时,我想知道我可以安全地关闭我的会话,而不必担心忘记将其设置为关闭,从而给其他用户造成麻烦。

2 个答案:

答案 0 :(得分:0)

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1a6ba2bb-5e82-47e8-a1a0-16fc044b951e/detect-current-identityinsert-settings?forum=transactsql

来自Microsoft:

由于SET IDENTITY_INSERT是会话敏感的,因此它在缓冲级别进行管理而不存储在某处。这意味着我们不需要检查IDENTITY_INSERT状态,因为我们从未在当前会话中使用此关键字。

如果有任何不清楚的地方,请随时提出。

谢谢,

Jin Chen - MSFT

答案 1 :(得分:0)

是的。你可以这样测试:

创建测试表集标识插入并插入其中。

create table Test (
  TestIdentity int identity,
  SomeValue char(1)
);

set identity_insert Test ON
insert into Test (
  TestIdentity,
  SomeValue
) values (
  1,
  'x'
)

打开新查询并尝试插入表而不设置标识插入。它会失败。

insert into Test (
  TestIdentity,
  SomeValue
) values (
  2,
  'y'
)