链接服务器执行查询时随机出现用户登录失败问题求助
链接服务器随机报错的配置优化方案
用户遇到的随机报错信息:
OLE DB 提供程序"SQLNCLI11" 针对链接服务器""返回消息"Communication link failure"。会话提供程序:连接已被对等方关闭 [xFFFFFFFF]。Msg 18456,级别14,状态1,第1行:用户'pbi_reporting_read_only'登录失败。Msg 4064,级别11,状态1,第1行:无法打开用户默认数据库。登录失败。
需要对链接服务器及关联账号做以下配置调整:
修复登录账号的默认数据库问题
这是Msg 4064错误的直接原因,先解决账号本身的登录基础问题:- 执行T-SQL修改账号的默认数据库为存在且有权限的数据库:
USE master; ALTER LOGIN [pbi_reporting_read_only] WITH DEFAULT_DATABASE = [指定有效数据库名]; - 确保账号对该默认数据库有连接权限:
USE [指定的默认数据库]; GRANT CONNECT TO [pbi_reporting_read_only];
- 执行T-SQL修改账号的默认数据库为存在且有权限的数据库:
调整链接服务器的超时配置
针对"Communication link failure"这类网络相关的随机报错,增加超时阈值避免连接被提前关闭:- 通过T-SQL设置连接超时和查询超时(示例设置为300秒):
EXEC sp_serveroption @server=N'你的链接服务器名称', @optname=N'connect timeout', @optvalue=N'300'; EXEC sp_serveroption @server=N'你的链接服务器名称', @optname=N'query timeout', @optvalue=N'300';
或者在SSMS的链接服务器属性界面,找到「服务器选项」手动修改对应值。
- 通过T-SQL设置连接超时和查询超时(示例设置为300秒):
启用长连接保持设置
开启保持连接选项,维持链接服务器的长连接状态,减少被对等方主动关闭的概率:EXEC sp_serveroption @server=N'你的链接服务器名称', @optname=N'keep alive', @optvalue=N'30';该值代表发送保持连接心跳的间隔(秒),可根据实际网络情况调整。
验证驱动兼容性
确保链接服务器两端使用的SQLNCLI11驱动版本一致,若存在版本差异,升级至最新兼容版本,避免因驱动不兼容导致的随机通信故障。排查网络稳定性
检查链接服务器之间的网络链路是否存在丢包、延迟波动问题,必要时联系运维团队排查网络基础设施故障。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

