防止 dbo 用户删除自己的数据库

Kev*_*Kev 6 sql-server-2005 sql-server sql-server-2008-r2

我们允许我们的用户dbo在他们自己的数据库中,但是这确实使他们能够删除他们自己的数据库。这并不经常发生,但我想阻止他们这样做。

我设计了以下触发器来防止这种情况发生,并将数据库删除到sysadmin角色成员:

CREATE TRIGGER [deny_customer_db_drop]
ON ALL SERVER
FOR DROP_database
AS
IF IS_SRVROLEMEMBER('sysadmin') = 0
BEGIN
    PRINT 'You are not permitted to drop this database'
    ROLLBACK
END
GO
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否有更优雅的方法来使用权限而不调整每个登录自己的特定权限?

Alf*_*f47 4

这是你唯一的选择。

作为旁注,您可能还想检查服务器角色 db_creator = 0。