Захват и запуск 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>,

Другие вопросы по тегам