我正在尝试从我的应用程序中创建一个SQL Server登录和数据库用户,以及一个自定义应用程序用户行.我希望这些用户能够创建其他用户 - 即应用程序将控制谁可以/不能创建用户但我需要所有用户拥有创建SQL服务器登录和数据库用户的权限.
我已经获得了服务器登录权限 - 即现有用户/登录可以创建新登录 - 通过将登录添加到'securityadmin'服务器角色 - 授予'ALTER ANY LOGIN'权限.
我试图对数据库用户做同样的事情 - 将它们添加到'db_accessadmin'数据库角色 - 这应该授予CREATE USER所需的ALTER ANY USER权限.
但是,每当我尝试使用具有上述权限的用户创建新数据库用户时,我都会获得权限异常.
我尝试手动授予特定用户ALTER ANY USER权限(GRANT ALTER ANY USER to demouser)但这也不起作用.
从技术上讲,是的.无论是对还是错......没有评论.
无论如何,数据库安全性分为两个功能:
db_accessadmin来管理用户(或者你提到的"ALTER ANY USER"权限)
db_securityadmin允许您管理角色成员身份和对象权限(或"ALTER ANY ROLE权限")
这是针对sp_addrolemember提到的.
您实际上是通过运行sp_addrolemember来更改角色而不是用户,因此"ALTER ANY ROLE"就足够了,而没有完整的db_owner权限.