You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询Microsoft SQL Azure中SQL表结构的修改者及时间

查询Azure SQL表结构修改的操作人与时间

你当前使用的sys.dm_db_index_usage_stats只能记录表的最后更新时间,无法捕获DDL(修改列数据类型属于DDL操作)的执行人和具体操作信息,以下是可行的解决方案:

1. 利用Azure SQL审计日志(推荐)

如果你的数据库已经开启了Azure SQL数据库审计(通过Azure门户或T-SQL配置),可以通过审计日志查询操作人、时间和执行语句:

SELECT 
    event_time AS 操作时间,
    session_server_principal_name AS 操作人,
    statement AS 执行的DDL语句
FROM sys.fn_get_audit_file('https://<你的存储账户名>.blob.core.windows.net/sqldbauditlogs/<你的服务器名>/<TestDB>/', DEFAULT, DEFAULT)
WHERE 
    action_id = 'AL' -- ALTER TABLE操作对应的action_id
    AND target_object_name = 'TestTbl'
    AND database_name = 'TestDB'

注意:替换URL中的占位符为实际存储账户、服务器名称信息。

2. 通过扩展事件查询

如果之前创建了追踪DDL操作的扩展事件会话,可以查询事件文件获取信息:

SELECT 
    event_data.value('(event/@timestamp)[1]', 'datetime') AS 操作时间,
    event_data.value('(event/data[@name="username"]/value)[1]', 'nvarchar(100)') AS 操作人,
    event_data.value('(event/data[@name="statement"]/value)[1]', 'nvarchar(max)') AS 执行语句
FROM 
    (SELECT CONVERT(xml, event_data) AS event_data
     FROM sys.fn_xe_file_target_read_file('<你的扩展事件文件路径>*.xel', NULL, NULL, NULL)) AS x
WHERE 
    event_data.value('(event/data[@name="object_name"]/value)[1]', 'nvarchar(100)') = 'TestTbl'

3. 无提前配置时的补救方案

如果既没有开启审计也没有配置扩展事件,事后很难直接获取操作人:

  • 可以查看sys.tables的modify_date确认修改时间,但无法获取操作人:
    SELECT name AS 表名, modify_date AS 最后修改时间
    FROM sys.tables
    WHERE name = 'TestTbl' AND database_id = DB_ID('TestDB')
    
  • 若修改操作是通过Azure门户、ARM模板等方式触发的,可以在Azure活动日志中搜索对应时间的数据库操作,查看操作人;但直接执行SQL语句修改的情况不会记录在活动日志中。
  • 解析事务日志(sys.dm_db_log_info)可以找到ALTER TABLE相关事务的时间,但无法直接关联操作人,且解析难度高:
    SELECT 
        [Begin Time] AS 事务开始时间,
        Operation,
        [Transaction ID]
    FROM sys.dm_db_log_info(DB_ID('TestDB'))
    WHERE Operation LIKE '%ALTER_TABLE%'
    

总结:提前配置审计或扩展事件是捕获DDL操作信息的最佳方式,未提前配置的话,事后获取操作人存在局限性。

内容的提问来源于stack exchange,提问作者JOakland2021

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:25:20