Tableau连接SQL Server场景下如何查看模拟请求及模拟执行的查询
查看Tableau Server发往SQL Server的模拟请求及执行语句的方法
SQL Server 侧追踪(最精准)
- 扩展事件追踪(推荐,生产环境可用)
新建扩展事件会话,添加sql_statement_completed、rpc_completed、login、impersonate事件,设置筛选条件为Tableau服务器IP地址,或Impersonate via server Run As account配置的原始运行账号,即可捕获所有来自Tableau的请求:其中impersonate事件会直接记录模拟的目标用户名,和同会话下的语句事件关联后,就能对应到每个模拟身份执行的完整查询。 - SQL Server Profiler(仅临时调试用)
开启Profiler追踪,在默认标准模板基础上,额外添加审核模拟事件、SQL:BatchCompleted、RPC:Completed事件,筛选器指定Tableau服务器的IP或Run As账号名称,即可实时查看所有模拟请求和对应执行语句,生产环境不推荐使用,性能开销较高。 - 动态管理视图查询(实时查看活跃请求)
执行以下语句可直接查看当前正在运行的来自Tableau的模拟请求:SELECT s.session_id, s.original_login_name, -- Tableau配置的原始Run As账号 s.login_name, -- 模拟后的目标用户账号 t.text AS 执行的查询语句 FROM sys.dm_exec_sessions s INNER JOIN sys.dm_exec_requests r ON s.session_id = r.session_id CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE s.host_name = '替换为你的Tableau服务器主机名' AND s.original_login_name = '替换为你的Run As账号名'
Tableau Server 侧日志排查
- 查询日志提取
可视化查询请求可到Tableau Server安装目录的logs/vizqlserver文件夹下查找日志,搜索关键字Impersonate、SQL Server地址或数据源名称,日志会明确记录原始运行账号、模拟的目标用户、发往数据库的完整查询语句;如果是计划刷新类的后台任务,到logs/backgrounder文件夹下过滤即可。 - 存储库查询关联
开启Tableau Server内置PostgreSQL存储库的访问权限后,可查询http_requests、background_jobs、datasources表,关联请求时间、用户ID、数据源ID信息,和SQL Server侧捕获的请求时间匹配后,可定位到Tableau侧触发请求的具体用户和操作。
内容的提问来源于stack exchange,提问作者Mandelbrotter
相关产品推荐
相关产品推荐

