Захват и запуск DDL на другой схеме
У меня есть две схемы в базе данных с именем DBO и Switch. Я создал этот триггер DDL, который записывает изменения DDL в DBO в таблицу. Затем я проверяю, разделены ли объекты, затронутые DDL, или нет, и если да, я запускаю тот же DDL на другом коммутаторе схемы. Этот подход работает нормально, если пользователь не указывает имя схемы в инструкции DDl.
Я ищу способ проверить выданный DDl на наличие имени схемы и, если его нет, выдать DDL по умолчанию для схемы SWitch. Есть идеи, как мне этого добиться? Я новичок в кодировании TSQL и буду признателен всем, кто поможет мне с этим.
1 ответ
В EVENTDATA
доступны для использования в DDL Trigger, есть следующие поля (среди прочих):
<EVENT_INSTANCE>
<DatabaseName>RT-BOOKS</DatabaseName>
<SchemaName>dbo</SchemaName>
<ObjectName>Books_PL$ID</ObjectName>
<TSQLCommand>
<CommandText>
</CommandText>
</TSQLCommand>
</EVENT_INSTANCE>
Если <SchemaName>
вам недостаточно (если вы правильно поняли, вы хотите проверить, явно ли пользователь использовал имя схемы в запросе), а затем попытаться разобрать <CommandText>
с помощью <SchemaName>
а также <ObjectName>
,