Man*_*eld 18 sql-server permissions truncate sql-server-2012
我有一个对数据库具有以下权限的 SQL 帐户:

db_executor您看到此帐户所属的角色是由以下脚本创建的:
CREATE ROLE [db_executor] AUTHORIZATION [dbo]
GO
GRANT EXECUTE TO [db_executor]
GO
Run Code Online (Sandbox Code Playgroud)
当我运行一个select,update,insert或delete放在桌子上,它工作正常。当我尝试truncate桌子时,它给了我这个错误信息:
找不到对象“TableName”,因为它不存在或您没有权限。
此帐户缺少什么权限?
Mik*_*lsh 31
查找此信息的最佳位置是在线书籍。TRUNCATE TABLE 这里的文章指出:
所需的最低权限是对 table_name 的 ALTER。TRUNCATE TABLE 权限默认授予表所有者、sysadmin 固定服务器角色的成员以及 db_owner 和 db_ddladmin 固定数据库角色,并且不可转让。但是,您可以将 TRUNCATE TABLE 语句合并到一个模块(如存储过程)中,并使用 EXECUTE AS 子句向该模块授予适当的权限。
所以 ALTER 是所需的最低权限。您可以将其作为 DB Owner 获得,也可以作为 DB_DDLAdmin 获得。或者只是授予改变。
如果您考虑 truncate 的作用以及它是如何工作的,这是有道理的,这是一个非常“严重”的命令,它会清空数据表并快速完成。
Tho*_*ger 12
根据BOL 中的这个参考:
所需的最低权限是ALTER 对 table_name。TRUNCATE TABLE 权限默认授予表所有者、sysadmin固定服务器角色的成员以及db_owner和db_ddladmin固定数据库角色,并且不可转让。但是,您可以将 TRUNCATE TABLE 语句合并到一个模块(如存储过程)中,并使用 EXECUTE AS 子句向该模块授予适当的权限。
| 归档时间: |
|
| 查看次数: |
69978 次 |
| 最近记录: |