2013-10-31 71 views
1

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

我遇到的问题是alter操作:当从Management Studio更改列名称时,生成的事件不包含有关列的任何信息!它只是说,该表被锁......更重要的是,如果有很多列在一次改变(比如,列 =>OOF,而且,列酒吧 =>RAB)事件被触发只有一次!

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

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

+0

“http://technet.microsoft.com/en-us/library/bb522542(v=sql.105).aspx”这里你会发现所有的ddl事件你可以跟踪。如果从SSMS发生更改,则无法在DDL触发器中进行控制。而是编写服务器级别的触发器来仅允许使用t-sql命令进行更改。 –

+0

该链接似乎已被破坏...我恐怕不能禁止用户修改SSMS中的表格...... – ferc

回答

-1

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