3

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

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

当 IDENTITY_INSERT 设置为 OFF 时,无法在表“table_name”中插入标识列的显式值。

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

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');
4

1 回答 1

3

set identity_insert .. on仅在当前会话中有效,并且仅在一张表上有效。
一般来说,它不是一个应该在实际代码中使用的设置,只是为了快速和肮脏的修复(例如,在跨服务器迁移数据时它真的很有用)

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

于 2013-10-01T18:37:14.420 回答