如何获取Azure Synapse专用SQL池近7天用户执行的SQL查询列表?
Azure Synapse专用SQL池:获取近7天用户执行的SQL查询列表
以下是可直接使用的查询语句,通过正确关联DMV视图筛选近7天数据,返回你需要的字段:
SELECT s.login_name AS LoginUserName, r.submit_time AS Query_Submit_time, r.end_time AS QueryEndTime, ISNULL(q.sql_text, r.command) AS Actual_SQL_Query, r.status AS Query_Status FROM sys.dm_pdw_exec_requests r JOIN sys.dm_pdw_exec_sessions s ON r.session_id = s.session_id LEFT JOIN sys.dm_pdw_sql_requests q ON r.request_id = q.request_id WHERE -- 筛选近7天的请求(Synapse DMV使用UTC时间) r.submit_time >= DATEADD(day, -7, GETUTCDATE()) -- 排除系统会话(session_id < 50为系统内置会话) AND s.session_id >= 50 -- 仅保留SQL查询类请求(可根据需求调整过滤条件) AND r.[type] = 'QUERY' ORDER BY r.submit_time DESC;
关键说明:
- LoginUserName:通过
sys.dm_pdw_exec_sessions的login_name获取,需确保session_id关联正确,匹配会话与对应的执行请求。 - Actual_SQL_Query:优先使用
sys.dm_pdw_sql_requests.sql_text获取完整SQL语句;若该字段为空(部分特殊请求),则 fallback 到sys.dm_pdw_exec_requests.command字段。 - 时间处理:Synapse DMV的时间字段均为UTC格式,若需转换为本地时间,可使用
CONVERT(datetime, SWITCHOFFSET(r.submit_time, DATEPART(tzoffset, SYSDATETIMEOFFSET())))进行转换。 - 权限要求:执行该查询需要
VIEW SERVER STATE权限,若权限不足需联系管理员授权。 - 数据有效期:Synapse专用SQL池的DMV数据默认保留约7天,刚好覆盖你的需求范围。
内容的提问来源于stack exchange,提问作者Gourav Joshi
相关产品推荐
相关产品推荐

