Я пытаюсь изменить базу данных через триггер DDL, который будет срабатывать при создании. Однако я получаю ошибку ниже.Alter Database Statement в DDL Trigger
CREATE TRIGGER ddl_trig_database
ON ALL SERVER
FOR CREATE_DATABASE
AS
declare @dbname as nvarchar(100)
declare @sql as nvarchar(max)
select @dbname =
CAST(eventdata().query(
'/EVENT_INSTANCE/DatabaseName[1]/text()'
) as NVarchar(128))
select @sql = N'SET IMPLICIT_TRANSACTIONS OFF
ALTER DATABASE ' + @dbname+ N' SET COMPATIBILITY_LEVEL = 110
SET IMPLICIT_TRANSACTIONS ON'
exec (@sql)
GO
create database test
Ошибка:
Msg 226, Level 16, State 6, Line 22
ALTER DATABASE statement not allowed within multi-statement transaction. The statement has been terminated.
Я на SQL Server 2014 на Windows, 2012.
Я хочу установить условие для определенных баз данных и не хочу, чтобы оно было на всех. –
@ShijuSamuel: но если у вас есть системный триггер - эти настройки будут применены к ** всем ** новым базам данных ...... –