我在名为DBO和Switch的数据库上有两个模式。我已创建此DDL触发器,将DBO上的DDL更改记录到表中。然后,我检查受DDL影响的对象是否已分区,如果是,则在另一个模式Switch上运行相同的DDL。除非用户未在DDl语句中指定模式名称,否则此方法可以正常工作。
我正在寻找一种方法来检查已发布的DDl是否存在模式名称,如果不存在,则默认情况下在SWitch模式上发出DDL。 有关如何实现这一目标的任何想法?我是TSQL编码的新手,非常感谢有人帮我解决这个问题。
答案 0 :(得分:0)
在DDL触发器中可用的EVENTDATA
中,有以下字段(包括其他字段):
<EVENT_INSTANCE>
<DatabaseName>RT-BOOKS</DatabaseName>
<SchemaName>dbo</SchemaName>
<ObjectName>Books_PL$ID</ObjectName>
<TSQLCommand>
<CommandText>
</CommandText>
</TSQLCommand>
</EVENT_INSTANCE>
如果<SchemaName>
对您来说不够(如果理解正确,您想检查用户是否在查询中明确使用了架构名称),请尝试使用<CommandText>
解析<SchemaName>
并<ObjectName>
。