我想設置一個MS SQL觸發器(或其他一些機制),它會自動授予某些組的db_owner權限。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
既然不能用在我使用EXEC ('USE [' + @databaseName + ']')
方法試圖觸發USE
聲明 - 但它也不起作用。
有什麼建議嗎?
編輯:如果我可以授予基於組成員資格的不同權限,那將是非常棒的。例如,用戶是組A的成員,然後將A添加到db_owner,如果B然後添加B,C和E等。
噢謝謝你,這是個好主意!但是如果我想執行一些基本的邏輯,比如授予基於組成員資格的權限。 – CMy