Azure SQL:如何确定表是否已更改或创建以及由谁创建

时间:2018-05-25 19:27:21

标签: c# sql azure azure-sql-database

我的团队使用大型Azure SQL数据库,其他几个团队从我们的数据库中插入和读取数据。他们有时需要创建或更改表,但这些操作应该与我们的团队协调,但不幸的是并非如此。我们有几个场景,其中一个团队更新了存储过程。因此,他们的更改不在我们的源代码控制之下,如果我们为开发创建本地数据库或进行备份/恢复,我们会因缺少引用而收到错误。

我们正在寻找一种以编程方式确定表是否被更改或修改的方法。它不需要是实时的。我考虑过阅读日志并寻找alter或create命令。我没有太大的成功,因为日志是二进制的,我目前不知道如何解析它们。我的另一个想法是保留master数据库sys表的副本,并定期比较它们以查看是否有更改。我不确定这样做有多好,或者我能否确定谁做出了改变。想法,想法?

请记住,这是使用Azure SQL数据库,它比标准SQL数据库更有限。

1 个答案:

答案 0 :(得分:2)

您可以按照here的说明使用DDL触发器。

CREATE TRIGGER safety   
ON DATABASE   
FOR DROP_TABLE, ALTER_TABLE   
AS   
   PRINT 'Save change on a log'   
   SELECT EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)');

此外,您可以使用扩展事件来跟踪架构更改。查看样本here

最后,您还可以了解Azure SQL Auditing如何满足您的需求。