TRUNCATE TABLE 能删除掉整表的数据,而且还不写入到事物日志里,这个权限太大了,以后那个用户执行 truncate table 表名,删除掉整表数据都查不到是谁干的,需要控制此权限,请问怎么控制? 我把用户权限都设置成 db_datareader,db_denydatawriter 怎么用户还是能执行ALTER 命令?

解决方案 »

  1.   

    TRUNCATE TABLE 写入事务日志,谢谢
      

  2.   

    所需的最低权限是对 table_name 的 ALTER 权限。TRUNCATE TABLE 权限默认授予表所有者、sysadmin 固定服务器角色的成员、db_owner 和 db_ddladmin 固定数据库角色的成员,并且不可转移权限。你把用户的alter权限禁掉试试
      

  3.   

    用户权限都设置成 db_datareader,db_denydatawriter 是不可能会有执行alter 的权限的请认真检查你的用户角色。
      

  4.   

     db_datareader,db_denydatawriter  角色的用户是没有权限执行 truncate table tb也不会有 alter 权限。你看一下你是不是 给用户还指定了其他角色  
      

  5.   

    禁用alter 权限是可以禁止truncate table 的运行,但是这样让用户 修改存储过程的权限就没有了,允许开发人员在数据库上修改存储过程。那有什么办法吗?
      

  6.   

    那看看有没有deny truncate 相似的授权写法。