Я создаю триггер уровня сервера в SQL 2008 для создания журнальных журналов и их удаления. Мне нужно зарегистрировать базу данных, из которой была создана таблица. Сначала я создал столбец со значением по умолчанию db_name(), но это всегда записываемый мастер. Затем я попытался использовать это в моем вставном заявлении:Получить имя базы данных из DDL Trigger
EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(max)')
Это работало на некоторое время, но вдруг он начал запись мастера для всех творений таблицы и капля независимо от базы данных таблицы была в каждом из таблицы капли. была выполнена с использованием SSMS. Кто-нибудь знает, почему я вижу это поведение? Еще важнее, знает ли кто-нибудь, как регистрировать правильную базу данных?
EDIT: Я нашел статью, которая заставляет меня думать, что я делаю неправильно. По-видимому, вы должны захватывать только create_table и drop_table из триггера с привязкой к базе данных, а не из триггера server_scoped. Я все равно хотел бы оставить вопрос открытым, если кто-то знает, как обойти это.
Спасибо за ссылку MSDN. Я искал MSDN для списка и не смог его найти. – jhale
Добро пожаловать, рад помочь. –