1

我需要审核对数据库所做的 DDL 更改。这些更改需要稍后在许多其他数据库中复制。我在这里发现可以启用 DDL 触发器来跟踪 DDL 活动,这对操作非常有用create tabledrop table因为触发器获取了已执行的 T-SQL,我可以愉快地将它存储在某个地方并简单地在另一个上执行它服务器稍后。

我遇到的问题是alter操作:当从 Management Studio 更改列名时,生成的事件不包含有关列的任何信息!它只是说表被锁定了...更重要的是,如果一次更改了许多列(例如,列foo => oof以及列bar => rab),则该事件仅触发一次!

我可怜的人的解决方案是有一个表来存储要在更改操作之前和之后更改的表的结构。这样,我可以比较两种结构并找出哪一列发生了什么。

但在我这样做之前,我想知道是否可以使用我忽略的 SQL Server 中的其他一些功能来做到这一点,或者也许有更好的方法。你会怎么做?

4

2 回答 2

0

有一个产品就是为了做到这一点(我写的)。
它监视包含 ddl 更改的脚本、谁编写了它们以及何时以及它们对性能的影响,它使您能够轻松地将它们复制为一个部署脚本。对于您的要求,免费版本就足够了。
http://www.seracode.com/

于 2018-05-28T12:28:11.793 回答
-1

SQL Server 中没有关于您需要的特殊功能。您可以使用触发器,但它们需要大量 T-SQL 编码才能正常工作。快速的解决方案是一些第三方工具,但它们不是免费的。请查看有关第三方工具的答案https://stackoverflow.com/a/18850705/2808398

于 2014-02-24T19:02:34.023 回答