Azure Database Watcher连接SQL托管实例后仪表板无实例显示求助
排查Azure Database Watcher未显示SQL Managed Instance的方案
针对你遇到的仪表板未显示SQL MI实例的问题,在已完成的验证基础上,可以补充以下排查步骤:
1. 验证托管身份(ME-ID)的实际权限关联
- 进入Azure门户的SQL MI资源页,导航至身份 -> 角色分配,确认Database Watcher对应的服务主体已被分配合适的角色(如
SQL Managed Instance Contributor或包含必要权限的自定义角色),且权限范围精确到目标SQL MI资源。 - 用Azure CLI命令确认角色分配有效性:
确保返回结果中包含有效的角色分配记录,无过期或错误配置。az role assignment list --assignee <Database-Watcher-SP-ID> --scope /subscriptions/<订阅ID>/resourceGroups<资源组名>/providers/Microsoft.Sql/managedInstances/<SQL-MI名称>
2. 深入验证专用端点的网络连通性
- 检查SQL MI专用端点所在子网的NSG规则,确认允许Database Watcher资源所在VNet的IP段访问SQL MI的端口(默认1433),同时出站规则未限制到SQL MI的流量。
- 从Database Watcher关联的计算资源(如监控节点)测试连通性:
确保返回Test-NetConnection <SQL-MI-私有IP> -Port 1433TcpTestSucceeded: True,排除网络层面的连通问题。
3. 确认T-SQL脚本的执行有效性
- 登录SQL MI,执行以下查询确认服务主体登录及角色成员关系:
确保登录存在且已加入-- 检查登录是否存在 SELECT name, type_desc FROM sys.server_principals WHERE name = '<Database-Watcher-SP名称>'; -- 检查角色成员 SELECT r.name AS RoleName, m.name AS MemberName FROM sys.server_role_members rm JOIN sys.server_principals r ON rm.role_principal_id = r.principal_id JOIN sys.server_principals m ON rm.member_principal_id = m.principal_id WHERE m.name = '<Database-Watcher-SP名称>';dbmanager、loginmanager等必要服务器角色。
4. 检查数据存储的配置兼容性
- 确认数据存储(如Azure Monitor Logs、存储账户)与Database Watcher处于同一Azure区域,预览版服务通常要求资源同区域部署。
- 检查数据存储的访问控制,确认Database Watcher的服务主体已被分配
Monitoring Metrics Publisher(针对Logs)或Storage Blob Data Contributor(针对存储账户)角色,确保数据能正常写入。
5. 查看服务日志定位具体错误
- 进入Database Watcher资源页,导航至日志,使用以下查询筛选相关报错:
日志中通常会包含身份验证失败、网络超时、权限不足等具体信息,直接指向问题根源。AzureDiagnostics | where ResourceType == "AZUREDATABASEWATCHERS" | where Level == "Error" | project TimeGenerated, Message, OperationName
内容的提问来源于stack exchange,提问作者Nauman Kyani
相关产品推荐
相关产品推荐

