【问题标题】:Capture and run DDL on different schema在不同的架构上捕获和运行 DDL
【发布时间】:2013-07-16 14:52:18
【问题描述】:

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

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

【问题讨论】:

    标签: database ddl ddl-trigger


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-03
      • 2013-12-18
      • 2020-07-05
      • 2021-04-11
      • 2011-11-27
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      相关资源
      最近更新 更多