链接服务器导致SQL Server停止响应
概要
如果多个实例中同时存在数据源为对方实例的链接服务器,并且开启了“分发服务器”的属性,您可能会遇到这种情况。
1 现象
14:31时,在SSMS中检查HIS实例是否有复制订阅时,点击了”发布服务器属性“后,SSMS一直无法响应。

14:33时,前端应用反馈有连不上数据库的情况,用SSMS测试也无法新建连接,但是原来已经建好的连接还能正常使用。14:38时,可以正常连接,前端应用也恢复正常。

2 分析
通过SQL专家云,看到HIS和CIS两个实例的活动会话等待数从14:31开始同时激增,HIS实例持续到14:39,CIS实例持续到14:44。


大量的活动会话在执行系统存储过程sys.sp_helpdistributor,等待类型都是OLEDB。


SQL Server官方文档对这个存储过程的功能描述是”列出有关分发服务器、分发数据库、工作目录和 Microsoft SQL Server 代理用户帐户的信息。该存储过程在发布服务器上对发布数据库或任何数据库执行。“。详细信息参考”https://learn.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/ms177504(v=sql.100)“。查看存储过程的定义,先获取数据源是分发服务器实例的链接服务器,如果该链接服务器的数据源不是当前实例,那么通过该链接服务器远程执行这个存储过程,获取分发服务器的信息。


在HIS实例上查询符合分发服务器条件的链接服务器是CISSVR,数据源是CIS实例。

在CIS实例上查询符合分发服务器条件的链接服务器是HISSVR,数据源是HIS实例。

根据上面查询到的信息和存储过程的定义可以得出结论:SSMS在HIS实例中点击”发布服务器属性“,首先在HIS实例中执行sys.sp_helpdistributor,查询到链接服务器CISSVR为分发服务器,通过exec CISSVR.master.sys.sp_helpdistributor的方式在CIS实例中执行该存储过程,又查询到链接服务器HISSVR为分发服务器,继而通过exec HISSRV.master.sys.sp_helpdistributor的方式在HIS实例中执行该存储过程。如此形成了死循环式的嵌套调用,随着调用次数越来越多,连接数和内部线程消耗越来越多,导致新连接无法建立,直到生成Deadlocked Schedulers dump后。


3 测试
问题虽然定位清楚了,但是客户确认没有使用复制订阅的功能。因此判断和链接服务器属性有关。在测试环境进行验证, 在没有开启复制订阅功能的实例,是不能看到“发布服务器属性”的菜单的

修改任意链接服务器的“分发服务器”属性为True后,就能看到“发布服务器属性”的菜单。如果两个实例上各自有数据源为对方实例的链接服务器,就能模拟出相互循环调用的现象。

4 解决
对于没有使用复制订阅功能的实例,修改链接服务器的“分发服务器”属性为False,并且追溯为什么要开启这个属性。
对于使用了复制订阅功能的实例,不要配置两个实例互为对方的分发服务器,当然这种情况在实际环境中也不常见。
北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业,成立于2008年,创始团队及核心技术人员来自微软和雅虎。微软数据平台金牌合作伙伴。通过产品+服务双轮驱动的业务模式,15年间累计服务4000+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。

链接服务器导致SQL Server停止响应的更多相关文章
- 服务器重启可能会导致SQL Server中部分数据库变为single user mode
今天检查公司生产服务器的SQL Server数据库,惊讶的发现有三个生产数据库变为了single user mode.奇怪的是没有任何人和程序执行过SQL语句将这三个数据库设置为single user ...
- 用sp_addlinkedserver建立链接服务器(sql server2008中通过测试)
--在SQL SERVER 2008里,可以按以下的方式建立链接服务器 ? EXEC sp_addlinkedserver @server='Test',--这里是给链接服务器取的 ...
- Windows分页文件设置不当导致SQL Server服务被终止
Windows分页文件设置不当导致SQL Server服务被终止 文章说明 在正式开始验证和测试之前,先介绍Windows分页文件和SQL Server的动态内存管理.下面测试将分为两种测试场景:场景 ...
- 修改Windows帐户密码,导致Sql Server 2000无法启动
修改Windows帐户密码,导致Sql Server 2000无法启动. --现象以管理员或同等权限用户登录 Windows XP,建立 Sql Server 2000 数据库.之后,在修改此 Win ...
- 如何使用SQL Server链接服务器访问DB2 Server
首先,需要安装Microsoft OLE DB Provider for DB2 下载地址:http://download.microsoft.com/download/B/B/2/BB22098A- ...
- 由于服务器意外的断电,导致SQL SERVER服务器上数据库出现“置疑”而无法使用,
来自百度 1.停止数据库服务器,将数据库MDF文件和LDF文件复制备份一份2.启动数据库服务器,删除置疑的数据库3.仅用备份的数据库MDF文件附加数据库,sp_attach_db或者sp_attach ...
- SQL Server 无法连接到服务器。SQL Server 复制需要有实际的服务器名称才能连接到服务器。请指定实际的服务器名称。
异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html SQL性能优化汇总篇:http://www.cnblogs.com/dunit ...
- 跨库查询(OpenDataSource)与链接服务器(Linking Server)
一:跨库查询 Openrowset/opendatasource() is an ad-hoc method to access remote server's data. So, if you on ...
- SQL Server 数据库开启日志CDC记录,导致SQL Server 数据库日志异常增大
这几天单位的SQL Server业务数据生产库出现数据库日志增长迅速,导致最终数据无法写入数据库,业务系统提示"数据库事务日志已满",经过多方咨询和请教,终于将日志异常的数据库处理 ...
- 虚拟机备份克隆导致SQL SERVER 出现IO错误案例
案例环境: 服务器配置: CPU: Intel E5-2690 RAM: 12G 虚拟机 操作系统 : Windows Server 2008 R2 Standard Edtion ...
随机推荐
- 一招轻松解决node内存溢出问题
node启动项目造成内存溢出的解决办法 我们在使用node启动项目的时在项目较大的时候,可能会造成内存溢出.为什么会造成内存溢出呢? 要回答上面这个问题,我们要了解node中是如何分配内存的. Nod ...
- elementui中el-checkbox 选中时的详细介绍
checkbox-group 把多个checkbox管理为一组(需要注意的坑) 很多时候我们需要会遇见这样的场景. 比如用户需要选择多个值. 这个时候我们需要把多个 checkbox 放置在check ...
- 【分享代码片段】terraform中,如何从刚刚创建的 deployment 中获得所有容器的名字和 ip
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 不好意思,刚刚才开始用 terraform,或许是更好的办 ...
- 使用AI辅助写代码
市面上的AI写代码 GitHub +OpenAI 出品的Copilot:https://copilot.github.com/ Tabnie:Code Faster with AI Code Comp ...
- Go语言的100个错误使用场景(11-20)|项目组织和数据类型
目录 前言 2. Code and project organization 2.11 没有使用函数式选项模式(#11) 2.12 项目缺乏组织(#12) 2.13 创建公共设施包(#13) 2.14 ...
- 【题解】U405180 计算平方和
\(\bold{Part\ 0}\) 目录 \(/\ \bold{Contents}\) \(\bold{Part\ 1}\) 题目大意 \(/\ \bold{Item\ content}\) \(\ ...
- Kafka-基本介绍和常见问题
1.kafka 1.1.kafka介绍 kafka是最初由linkedin公司开发的,使用scala语言编写,kafka是一个分布式,分区的,多副本的,多订阅者的消息队列系统. 1.2.kafka ...
- Linux-yum卸载软件包
yum是Linux操作系统中最常用的软件包管理器之一,它可以帮助你很容易地安装.删除和更新软件包.然而,有时候yum在删除软件包时可能会出现一些问题,本文将告诉你如何正确地使用yum卸载软件包,并解决 ...
- Windows更换笔记本电脑需要迁移和删除的内容清单
一.需要迁移的内容清单 1.桌面和磁盘中重要的文件或者文件夹 2.chrome.Edge等浏览器的书签,可以导出 3.常用的软件安装包 (1).输入法(百度.或者搜狗) (2).浏览器(Chrome浏 ...
- gateway 是什么?
Gateway 定义是什么? 百度百科解释: 网关(Gateway)又称网间连接器.协议转换器.网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连. 网关既可以用于广 ...