1

我在名为 DBO 和 Switch 的数据库上有两个模式。我创建了这个 DDL 触发器,它将 DBO 上的 DDL 更改记录到表中。然后我检查受 DDL 影响的对象是否已分区,如果是,我在另一个模式 Switch 上运行相同的 DDL。除非用户没有在 DDl 语句中指定模式名称,否则这种方法可以正常工作。

我正在寻找一种方法来检查已发布的 DDl 是否存在架构名称,如果不存在,则默认情况下在 SWitch 架构上发布 DDL。关于如何实现这一目标的任何想法?我是 TSQL 编码的新手,如果有人帮助我解决这个问题,我将不胜感激。

4

1 回答 1

0

EVENTDATA可用于 DDL 触发器中,有以下字段(以及其他)可用:

<EVENT_INSTANCE>
  <DatabaseName>RT-BOOKS</DatabaseName>
  <SchemaName>dbo</SchemaName>
  <ObjectName>Books_PL$ID</ObjectName>
  <TSQLCommand>
    <CommandText>
    </CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>

如果<SchemaName>对您来说还不够(如果理解正确,您想检查用户是否在查询中明确使用了模式名称),然后尝试<CommandText>使用<SchemaName>and解析<ObjectName>

于 2013-12-02T16:48:17.190 回答