• SQL Server 中为何拥有db_owner权限的账号删除不掉数据库


    今天在公司的SQL Server服务器上,使用了一个只有public和dbcreator角色的账号"user1"在SMSS中去删除一个数据库,但是死活报错说没有权限,报错如下:

    Delete backup history failed for server 'MYSERVER' (Microsoft.SqlServer.Smo)
    Additional Information: The EXECUTE permission was denied on the object 'sp_delete_database_backuphistory'

    很明显这个错误是说我们登录的SQL Server账号没有权限删除数据库,后来我换成了一个拥有sysadmin角色的账号"user2"就可以删除了。但是奇怪的是拥有public和dbcreator角色的账号"user1"在要删除的数据库中是有db_owner权限的,按道理来说这种情况下应该是可以删除该数据库的啊。后来我又尝试在账号"user1"下不用SMSS的右键菜单按钮删除数据库,用语句删除,结果数据库居然成功删除了。。。语句如下:

    USE [master]
    DROP DATABASE DatabaseName

    后来我才发现,原来在使用SMSS的右键菜单按钮删除数据库时,有个checkbox是默认勾上的,如下图所示:

    这个"Delete Backup and restore history information for databases"需要数据库的sysadmin角色才能使用,而我们用DROP DATABASE语句删除数据库的时候,相当于没有勾选上面那个checkbox,所以使用账号"user1"可以成功删除数据库。所以切记当使用非sysadmin角色的SQL Server账号删除数据库的时候,一定不要选中上面截图中的第一个checkbox,否者会报错提示你权限不足被拒绝。

  • 相关阅读:
    Java:求字符串中邻接的数字为一个整体
    在jsp提交表单的参数封装到一个方法里
    synchronized
    java内存模型JMM
    多线程学习:线程基础
    集合框架总结与开发遇到的问题
    HashSet、LinkedHashSet学习笔记
    Iterable、Collection、AbstractConlltion、List学习笔记
    LinkedList学习笔记
    LinkedHashMap
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/9665818.html
Copyright © 2020-2023  润新知