TCP Provider The semaphore timeout period has expired


    我們一數據庫服務器上有個作業最近幾天偶爾會遇到下面錯誤(敏感信息已做處理),主要是報“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個,應該可以印證就是虛擬機之間的網絡掉包導致了這個作業的錯誤出現。關於如何診斷網絡問題,可以參考一下官方文檔如何解決網絡連接問題. 問題是基本定位了,但是如何解決是個讓系統管理員都頭痛的問題。

 

image

 

參考資料:

https://social.technet.microsoft.com/Forums/zh-CN/c3fc9f5d-c073-4a9f-bb3d-b7bb8f893f78/error-0x80070079-the-semaphore-timeout-period-has-expired?forum=itprovistanetworking

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/24df17db-5125-43d7-b504-5d2de132e461/sqlncli-linked-server-error?forum=sqldataaccess

https://support.microsoft.com/zh-cn/kb/325487


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM