我需要审核对数据库所做的 DDL 更改。这些更改需要稍后在许多其他数据库中复制。我在这里发现可以启用 DDL 触发器来跟踪 DDL 活动,这对操作非常有用create table
,drop table
因为触发器获取了已执行的 T-SQL,我可以愉快地将它存储在某个地方并简单地在另一个上执行它服务器稍后。
我遇到的问题是alter
操作:当从 Management Studio 更改列名时,生成的事件不包含有关列的任何信息!它只是说表被锁定了...更重要的是,如果一次更改了许多列(例如,列foo => oof以及列bar => rab),则该事件仅触发一次!
我可怜的人的解决方案是有一个表来存储要在更改操作之前和之后更改的表的结构。这样,我可以比较两种结构并找出哪一列发生了什么。
但在我这样做之前,我想知道是否可以使用我忽略的 SQL Server 中的其他一些功能来做到这一点,或者也许有更好的方法。你会怎么做?