Azure DB & Schema Change Tracking



我是Azure的新手,我被要求在Azure SQL Server中生成添加/更改的数据库、表或列的每日报告。具体来说,我们想知道什么时候创建了新的基准,添加了新的表,或者更改了现有的表,列也是如此。在非Azure SQL Server中,您可以在标准报告中使用架构更改历史记录,但这在Azure中不可用。

我看到了一些建议,您可以使用Extended Events来实现这一点,但我没有找到任何资源来展示如何实现这一目标。如有任何帮助,我们将不胜感激。

DDL触发器确实可以帮助您跟踪Azure SQL数据库上的架构更改。下面是一个例子:
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)');

数据库审核可以帮助更改架构和删除对象。下面是一个例子:

Set-AzureRmSqlDatabaseAuditing `
-State Enabled `
-ResourceGroupName "resourcegroupname" `
-ServerName "ssqlinstancename" `  #ssqlinstancename.database.windows.net
-StorageAccountName "strageaccountname" `
-DatabaseName "dbname" `
-AuditActionGroup 'SCHEMA_OBJECT_CHANGE_GROUP' `
-RetentionInDays 8 `
-AuditAction "DELETE ON schema::dbo BY [public]" 

如果你也想跟踪DML操作,你可以使用时态表,但数据库审计也有帮助:

Set-AzureRmSqlDatabaseAuditing -ResourceGroupName "resourceGroup"
-ServerName "SQL Server Name" -DatabaseName "AdventureWorksLT"  
-StorageAccountName "storageAccount" 
-AuditActionGroup "SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP", "FAILED_DATABASE_AUTHENTICATION_GROUP", "BATCH_COMPLETED_GROUP" 
-AuditAction "UPDATE ON database::[AdventureWorksLT] BY [public]"  
-RetentionInDays 60

相关内容

  • 没有找到相关文章

最新更新