【问题标题】:Azure DB & Schema Change TrackingAzure 数据库和架构更改跟踪
【发布时间】:2020-05-04 11:24:32
【问题描述】:
我是 Azure 的新手,我被要求生成一份关于 Azure SQL Server 中添加/更改的数据库、表或列的每日报告。具体来说,我们想知道何时创建新数据库、添加新表或更改现有表以及列的情况。在非 Azure SQL Server 中,您可以在标准报告中使用架构更改历史记录,但这在 Azure 中不可用。
我看到了一些建议,您可以使用扩展事件来做到这一点,但我没有找到任何资源来展示如何做到这一点。任何帮助将不胜感激。
【问题讨论】:
标签:
azure
azure-sql-database
【解决方案1】:
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