【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2020-04-12
      • 2010-09-13
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多