TCP Provider The semaphore timeout period has expired
2016-06-03 12:09 潇湘隐者 阅读(7958) 评论(0) 编辑 收藏 举报我们一数据库服务器上有个作业最近几天偶尔会遇到下面错误(敏感信息已做处理),主要是报“TCP Provider: The semaphore timeout period has expired. [SQLSTATE 07008] (Error 121) OLE DB provider "SQLNCLI" for linked server "(null)" returned message "Communication link failure". [SQLSTATE 01000] (Error 7412). The step failed.”。 作业执行的存储过程使用了Linked Server。服务器为虚拟机Vmware下的Windows Server 2003。
1 Date 2016/6/2 9:15:20 2 Log Job History (Job_Name) 3 4 Step ID 1 5 Server SERVERNAME 6 Job Name Job_Name 7 Step Name Job_Name 8 Duration 00:00:22 9 Sql Severity 16 10 Sql Message ID 7412 11 Operator Emailed 12 Operator Net sent 13 Operator Paged 14 Retries Attempted 0 15 16 Message 17 Executed as user: NT AUTHORITY\SYSTEM. TCP Provider: The semaphore timeout period has expired. [SQLSTATE 07008] (Error 121) OLE DB provider "SQLNCLI" for linked server "(null)" returned message "Communication link failure". [SQLSTATE 01000] (Error 7412). The step failed.
关于这个错误,在网上查了一些资料。例如这篇文章TCP Provider: The semaphore timeout period has expired里面介绍了好多可能导致这个错误出现的原因,例如TCP Chimney没有禁用,系统内存压力等,一一排除过后,觉得很有可能是网络问题,在这台服务器上,持续ping那台链接过去的服务器,
M:\DB_BACKUP>ping -t 192.168.xxx.xxx> ping.txt
持续ping 了二十多个小时候,期间作业出现了一次上述问题,期间掉包14个,应该可以印证就是虚拟机之间的网络掉包导致了这个作业的错误出现。关于如何诊断网络问题,可以参考一下官方文档如何解决网络连接问题. 问题是基本定位了,但是如何解决是个让系统管理员都头痛的问题。
参考资料:

· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2011-06-03 ORALC的STDDEV、STDDEV_POP、STDDEV_SAMP等函数