2

一部のグループ db_owner 権限を自動的に付与する MS SQL トリガー (またはその他のメカニズム) をセットアップしたいと考えています。

ユーザーに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 が追加されます。

4

1 に答える 1