SQL Web复制访问replisapi.dll?diag报WebSyncDiagAccess权限被拒
SQL Server Web复制访问replisapi.dll诊断页报WebSyncDiagAccess权限拒绝的排查方案
问题场景
- 环境配置
- 已部署开启合并发布的SQL Server服务器
- 同局域网、同域内的IIS Web服务器已安装
replisapi.dll组件,用于支持复制Web同步
- 异常表现
访问诊断地址https://MYWEBSERVER/SQLReplication/replisapi.dll?diag时,系统先弹出凭据验证窗口,输入合法域凭据完成校验后,返回如下错误:Access Denied because of no WebSyncDiagAccess(因无WebSyncDiagAccess权限导致访问被拒)
排查修复步骤
- 检查IIS基础运行权限
- 定位
SQLReplication虚拟目录对应的应用程序池,将运行账号修改为有域访问权限的域账号,避免使用本地虚拟账号(如ApplicationPoolIdentity) - 给应用程序池运行账号授予
replisapi.dll所在物理目录的读取、执行权限 - 确认IIS处理程序映射中已正确添加
replisapi.dll的ISAPI扩展映射,同时在「ISAPI和CGI限制」列表中,将该扩展设置为允许运行
- 定位
- 配置WebSyncDiagAccess专属权限(核心修复点)
该权限是SQL Server Web同步专门用来控制诊断页访问的独立权限,不会自动为所有域账号开放,需要手动配置:
方法一(官方推荐):
登录SQL Server发布服务器,打开SSMS连接到发布实例,展开「复制」节点,右键对应合并发布选择「配置Web同步」,按向导走到虚拟目录访问权限配置页,将IIS应用程序池运行账号、访问诊断页使用的域账号全部添加到允许列表,完成向导后重启IIS即可。
方法二(直接修改配置):
登录IIS服务器打开注册表编辑器,定位到对应SQL版本的复制配置节点(不同版本路径版本号不同:SQL Server 2008R2为100、2012为110、2016/2017/2019为140、2022为160),完整路径示例:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<版本号>\COM\Replication
找到名为WebSyncDiagAccess的字符串值,将需要授权的账号按域名\用户名格式填写,多个账号用分号分隔,修改完成后执行iisreset命令重启IIS生效。 - 校验身份验证配置
打开SQLReplication虚拟目录的身份验证设置,确认已启用Windows身份验证、禁用匿名身份验证;检查Windows身份验证的提供程序优先级,将NTLM或协商调整到首位,排除域控对该IIS服务器的账号登录限制策略影响。 - 复查SQL Server端发布权限
确认访问诊断页使用的域账号已加入对应合并发布的发布访问列表(PAL),账号在发布数据库中拥有复制元数据读取权限;如果配置了快照共享,还要给该账号授予快照共享的读取权限。
内容的提问来源于stack exchange,提问作者Pierantonio Bonato
相关产品推荐
相关产品推荐

