Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server标识“插入时找不到对象”;TableName";_Sql Server_Identity Insert - Fatal编程技术网

Sql server SQL Server标识“插入时找不到对象”;TableName";

Sql server SQL Server标识“插入时找不到对象”;TableName";,sql-server,identity-insert,Sql Server,Identity Insert,在java netbeans中运行时: executeUpdate("INSERT INTO TableName (id, name) VALUES (1, 'Name1')") 我得到一个错误: 当identity\u insert设置为OFF时,无法在表“TableName”中为identity列插入显式值 如果我跑步: executeUpdate("SET IDENTITY_INSERT TableName ON;INSERT INTO TableName (id,name) VALUE

在java netbeans中运行时:

executeUpdate("INSERT INTO TableName (id, name) VALUES (1, 'Name1')")
我得到一个错误:

当identity\u insert设置为OFF时,无法在表“TableName”中为identity列插入显式值

如果我跑步:

executeUpdate("SET IDENTITY_INSERT TableName ON;INSERT INTO TableName (id,name) VALUES (1,'Name1');SET IDENTITY_INSERT TableName OFF;") 
我得到这个错误:

找不到对象“TableName”,因为它不存在或您没有权限


为什么会发生这种情况?我如何解决这一问题?

只需让
IDENTITY
属性执行它在名称中的唯一传递。除非您试图将特定ID与名称相关联,否则无需显式地尝试传入ID,在这种情况下,您必须跟上已使用和未使用的值,而
IDENTITY
将有点无用。在这种情况下,我只需在ID列上添加一个唯一的约束


插入到TableName(name)值('Name1')
赋予ALTER权限就足够了

GRANT ALTER TO USER

为什么要在id列中输入显式值?如果要这样做,那么为什么要使用标识类型创建它?看起来像是权限问题。确保login/user对该表具有适当的权限,快速检查将使该用户成为dbowner。只有管理员才能将identity属性设置为on。这样做时,数据完整性问题的可能性很大。这不是推荐的做法。那你为什么要设置id值呢?我支持一个遗留项目。事情是这样的,没有解决办法;有时必须显式设置标识。没有证据表明您的声明,并且违反了所有最佳做法。有时有必要将标识值插入数据库。这是一个糟糕的想法,因为任何尝试此操作的用户都必须这样做。它还允许他们在您当前编写时更改其他对象。这就像用一颗500磅重的炸弹而不是锤子敲钉子。如果你给所有用户数据库的权限,你已经有问题了。我们总是为每个后台服务使用一个技术用户。只有这个“用户”有权更改数据。好主意。现在您无法审核谁更改了什么。我们的应用程序进行审核。