【发布时间】:2013-04-02 12:28:47
【问题描述】:
我想设置一个 MS SQL 触发器(或其他机制),它会自动授予某些组 db_owner 权限。
我不希望我们的用户在 SQL Server 上拥有 db_admin,相反,我只想授予他们 db_creator 但只要有人创建了一个数据库,其他用户也应该可以访问这个数据库。
我已尝试创建 SQL 触发器:
USE master
GO
CREATE TRIGGER trg_DDL_CreateDatabase
ON ALL SERVER
FOR CREATE_DATABASE
AS
DECLARE @databaseName varchar(max)
SET @databaseName = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]', 'VARCHAR(255)'))
EXEC ('USE [' + @databaseName + ']' )
IF IS_MEMBER ('DOMAIN\GROUP') = 1
EXEC sp_addrolemember N'db_owner', N'DOMAIN\SOMEGROUP'
ELSE
EXEC sp_addrolemember N'db_owner', N'DOMAIN\SOMEOTHERGROUP'
GO
由于我无法在触发器中使用 USE 语句,因此我尝试使用 EXEC ('USE [' + @databaseName + ']' ) 方法 - 但是它也不起作用。
有什么建议吗?
编辑:如果我可以根据组成员身份授予不同的权限,那就太棒了。例如,用户是组 A 的成员,则将 A 添加到 db_owner,如果 B,则添加 B、C 和 E 等。
【问题讨论】:
标签: sql sql-server triggers