Answers:
是的,可以通过几个权限来实现。
首先-创建数据库 -您需要授予服务器级别的权限Create Any Database
。此权限的作用听起来很像-创建数据库的功能。请注意,这并未将dbcreator的固定服务器角色授予登录名,因为该固定服务器角色为任何数据库提供了更改/删除权限。Create Any Database
允许登录仅拥有其拥有的数据库的权限。这也将提供还原功能。
(因此,仅通过执行“创建任何数据库” -您就可以创建新数据库,但可以避免使用dbcreator固定服务器角色删除或更改任何数据库)
要授予此“创建任何数据库”权限-
use [master]
GO
GRANT CREATE ANY DATABASE TO [LoginName]
GO
为了能够运行DBCC CHECKDB
和删除数据库,固定的数据库角色db_owner就足够了。这将满足您的所有要求。请注意:您还授予该用户选择,删除,截断,更新和插入的能力db_owner
。我喜欢将其视为sysadmin
数据库中的内容。
您只会将此权限应用于打算具有此功能的数据库。这将允许您控制用户可以删除,还原或检查数据库的数据库。没有向用户授予这些权限的任何数据库都可以防止该用户对这些数据库执行以下操作
为此,您首先需要将登录名映射到数据库用户:
USE [DatabaseName]
GO
CREATE USER [UserName] FOR LOGIN [LoginName]
GO
然后将该用户添加到db_owner
角色中(在SQL Server 2012及更高版本中适用):
ALTER ROLE [db_owner] ADD MEMBER [frank]
GO
对于SQL Server 2008,您必须使用系统存储过程来添加一个角色成员,作为下面正确指出的注释者:
EXEC sp_addrolemember 'db_owner', 'frank';
您也可以通过GUI完成所有这些操作。您将通过实例级别通过SSMS中的安全文件夹执行的登录信息:右键单击登录->属性-> Securables。对于数据库级别,您可以通过数据库级别的安全文件夹来执行此操作:右键单击并选择新用户->从服务器登录名列表中选择要使用的登录名/给数据库用户一个名称->转到成员资格选项卡以选择角色成员资格。
SQL Server的帮助系统联机丛书也是解决大多数权限问题的绝佳资源-如果您确定需要分配其他权限。只需搜索要授予权限的T-SQL命令,文章中通常会有该命令的“ 权限”部分,让您知道执行此操作所需的权限。您可以查看有关DBCC CHECKDB的文章作为示例-大约7/8的文章是“权限”部分。