SQL Server DDL更改(列名称,类型)

时间:2013-10-31 01:57:30

标签: sql sql-server ddl audit ddl-trigger

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

的答案