授予数据库的完整 SQL Server 权限

unc*_*ged 6 sql-server permissions roles

如何让用户(创建时没有登录)完全控制包含的数据库,而不必指定该数据库的名称,例如 GRANT CONTROL ON DATABASE::DatabaseName TO UserName,但不使用数据库名称?我认为它会包括 GRANT ALTER ANY SCHEMA TO UserName,但我不确定我还需要授予什么,或者是否有更好的方法。谢谢。

Aar*_*and 10

如果您确实希望他们能够在该数据库中执行任何操作,则可以将它们添加到db_owner角色中:

USE ContainedDatabase;
GO
ALTER ROLE db_owner ADD MEMBER [username];
Run Code Online (Sandbox Code Playgroud)

如果你想成为更精细,可以将其添加到较小的角色,比如db_ddladmindb_securityadmin等你可以看到列表中内置这里的角色:

每个角色的固有权限:

如果这些不适合,您可以创建自己的角色,将您的用户添加到该角色,并向您创建的该角色授予特定权限(和/或将它们添加到其他角色)。将权限应用于角色而不是直接应用于用户的区别只是重用 - 如果您再添加五个要应用相同权限的用户,您只需将它们添加到自定义角色,而不是应用这些细粒度的权限或所有 5 个用户的角色。