我收到我们开发人员的请求,
这种访问的最佳实践是什么?
授予dbcreator并拒绝对现有dbcreator的访问,或者有更好的方法吗?
默认情况下,SQL Server dbcreator不授予您访问数据库的权限。似乎是这样,因为在创建新数据库时,您(通常,除非另有说明)是该数据库的自动所有者。数据库的所有者可以在该数据库中进行所有操作。
但是,如果登录名具有dbcreator的服务器角色,他们仍然可以删除不拥有的数据库。他们可以创建新数据库或更改现有数据库。
如果您的目的是纯粹允许他们创建新数据库并仅管理它们。您应该只给他们创建权限。
USE MASTER
GO
GRANT CREATE ANY DATABASE TO Foo
GO
这仍然允许他们对创建的数据库运行ALTER语句(因为它们是所述数据库的所有者)。但不要对现有数据库运行alter(或drop)语句。
USE MASTER
GO
CREATE DATABASE [OwnedDB] --Succeeds
GO
ALTER DATABASE [OwnedDB] SET RECOVERY SIMPLE WITH NO_WAIT --Succeeds
GO
ALTER DATABASE [UnownedDB] SET RECOVERY SIMPLE WITH NO_WAIT --Fails due to permissions
GO