我以非sa用户“bhk”身份登录到sql Server 2005数据库,该用户只是“公共”服务器角色的成员.以下代码尝试在用户’bhk’调用的存储过程中执行.这行代码……
TruncATE TABLE #Table1 DBCC CHECKIDENT('#Table1',RESEED,@SequenceNumber) WITH NO_INFOMSGS
导致此错误…
User ‘guest’ does not have permission
to run DBCC CHECKIDENT for object
‘#Table1__00000000007F’.
我知道运行DBCC CHECKIDENT所需的权限…
调用者必须拥有该表,或者是sysadmin固定服务器角色,db_owner固定数据库角色或db_ddladmin固定数据库角色的成员.
所以我有两个问题:
>因为’bhk’正在调用存储的
创建临时的过程
表,不应该’bhk’是所有者
并被允许运行DBCC
CHECKIDENT?
>为什么会出错
消息返回该用户’来宾’
没有许可?据我所知,我不是
以“访客”身份登录.
任何帮助将不胜感激.
解决方法
这是一个替代解决方案,如果您需要使用大于1的序列号重新种子,则可能会有效.
TruncATE #Table1 SET IDENTITY_INSERT #Table1 ON INSERT INTO #Table1 (TableID) -- This is your primary key field VALUES (@SequenceNumber - 1) SET IDENTITY_INSERT #Table1 OFF DELETE FROM #Table1
这样做是在临时表上设置IDENTITY_INSERT,以允许您添加具有显式ID的行.然后,您可以删除此行,但是进一步的插入应该从最后一个序列号开始.
原文地址:https://www.jb51.cc/mssql/77152.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。