首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 連線逾時、協議順序與註冊表調優完整指南

     編輯:關於SqlServer

問題一:連線逾時

預設登入逾時:企管 4 秒、查詢分析器 15 秒。跨網段/Internet 連線易逾時。

調整方法

  • 企管:工具 → 選項 → 進階 → 登入逾時(秒)改大(如 20)。
  • 查詢分析器:工具 → 選項 → 連線 → 登入逾時改大。
  • 連接字串:Connection Timeout=30(ADO.NET)、Connect Timeout=30(ADO)。

問題二:TCP/IP vs Named Pipes 連線成功率差異

Windows 2000+ 為安全預設 TCP/IP 優先。若環境僅支援 Named Pipes(如某些舊應用、VPN 封鎖 TCP),需調整協議順序。

用戶端調整(cliconfg / 註冊表)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):6e,00,70,00,00,00,74,00,63,00,70,00,00,00,00,00
; 十六進位對應 "np\0tcp\0\0" → Named Pipes 優先,TCP 次之

或直接執行 cliconfg.exe →「啟用的協議」以滑鼠拖曳順序。

伺服器端調整

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
"ProtocolOrder"=hex(7):6e,00,70,00,00,00,74,00,63,00,70,00,00,00,00,00

註冊表十六進位編碼規則

  • 每個字元佔 2 位元組 (Unicode),字元間以 00 分隔。
  • 協議字串以 00 00 雙空字元結尾。
  • 常見協議代碼:tcp (TCP/IP)、np (Named Pipes)、via (VIA)、sm (Shared Memory)。

程式碼中指定協議(ADO.NET)

// 強制 TCP/IP
"Data Source=tcp:server_ip,1433;Initial Catalog=db;User ID=u;Password=p;"

// 強制 Named Pipes
"Data Source=np:\\server_ip\pipe\sql\query;Initial Catalog=db;User ID=u;Password=p;"

// 強制 Shared Memory (僅本機)
"Data Source=lpc:server_ip;Initial Catalog=db;User ID=u;Password=p;"

最佳實踐

  • 現代網路環境優先 TCP/IP,效能最佳、穿透防火牆容易。
  • 僅在舊應用/特殊網路拓撲下調整為 Named Pipes 優先。
  • 連接字串顯式指定協議前綴(tcp:/np:/lpc:),避免客戶端解析順序不確定性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved