如何在sqlserver中将identity_insert设置为on

时间:2013-10-01 14:47:18

标签: sql sql-server

我得到命令set identity_insert table_name on;,但由于某种原因,它实际上并没有改变属性。我已经使用我创建表格的帐户完成了这项工作,并且我还创建了一个“管理员”帐户并授予其执行任何操作的权限(据我所知)。

每当我在任一帐户下运行命令时,我得到'0行受影响'的结果,然后我无法运行查询以插入我想插入的行,并出现以下错误:

  

无法在表'table_name'中为identity列插入显式值   当IDENTITY_INSERT设置为OFF时。

此外,我尝试在查询中包含架构名称,如:

set identity_insert mySchema.table_name on; 

但是我收到以下错误:

  

找不到对象“mySchema.table_name”,因为它不存在   或者您没有权限。

另外值得注意的是,我的项目如下:

localhost\SQLEXPRESS
-Databases
--System Databases
--mySchema

有谁知道这个问题的解决方案?感谢。

以下是插入语句的摘录,如果有拼写错误,请确保它是MySQL中的工作查询:

INSERT INTO table_name (id,name,size,height,width,created_at,updated_at) VALUES 
 (1,'a_name',36,36,36,'2012-10-24 17:12:24','2012-10-24 17:12:24');

1 个答案:

答案 0 :(得分:3)

set identity_insert .. on仅在当前会话中有效且仅在一个表格上有效 通常,它不是应该在实际代码中使用的设置,仅用于快速和脏的修复(例如,在跨服务器迁移数据时它非常有用)

我建议设置ON,在同一个SSMS窗口中执行修改,然后将其设置为默认值OFF(关闭窗口也可以)。