我将以下SQL脚本放在一起,以便在创建新数据库时创建触发器,以便为特定帐户授予db_owner
权限:
CREATE TRIGGER ddl_trig_database
ON ALL SERVER
FOR CREATE_DATABASE
AS
DECLARE @DatabaseName NVARCHAR(128), @SQL NVARCHAR(4000)
SELECT @DatabaseName = EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]','NVARCHAR(128)');
SET @SQL = '
USE ' + @DatabaseName + ';
EXEC sp_addrolemember N''db_owner'', N''[accountname]'';'
EXEC(@SQL)
但是,当我尝试创建一个新数据库来测试此触发器时,我收到以下错误:
消息:用户或角色' [accountname]'在此数据库中不存在。 找不到数据库ID 45,名称' 45'。数据库可能处于脱机状态。 等几分钟再试一次。
我使用网络上的一些例子将它们放在一起。似乎在创建DB时正在发生触发,而不是在创建DB之后运行。有没有办法推迟呢?
答案 0 :(得分:0)
这里很少提及:
Logger
子句。