使用者可能無法使用 TCP/IP 通訊協定從遠端連線到 SQL Server
本文可協助您解決無法使用 TCP/IP 通訊協定從遠端連線到 SQL Server 的問題。
原始產品版本: SQL S
原始 KB 編號: 2018930
徵狀
使用 Microsoft SQL Server 時,您可能會看到下列一或多個徵兆:
例如,只有具有 CONTROL SERVER 許可權 (的使用者,系統 管理員 固定伺服器角色) 的成員才能透過 TCP/IP 連線。 沒有此許可權的使用者無法使用 Windows 或 SQL Server 驗證,透過 TCP/IP 通訊協定從遠端連線。
注意事項
您會注意到提升許可權的用戶連線只會顯示在 sys.dm_exec_sessions (Transact-SQL) 動態管理檢視 (DMV) 中,但不會出現在 sys.dm_exec_connections (Transact-SQL) 檢視中。
使用命名管道通訊協定的本機和遠端連線,以及使用共用記憶體通訊協定的本機連線,都能繼續正常運作。
此外,下列訊息會記錄在 SQL Server Errorlog 檔案中:
在 SQL Server 啟動:
錯誤:26023,嚴重性:16,狀態:1。
伺服器 TCP 提供者無法接聽 ['any'ipv6<> 1963]。 Tcp 埠已在使用中。
錯誤:9692,嚴重性:16,狀態:1。
Service Broker 通訊協定傳輸無法接聽埠 1963,因為它正由另一個進程使用。針對失敗的登入:
SQL Server 2008 及更新版本:
錯誤:18456,嚴重性:14,狀態:11。
使用者 『MyDomain\TestAcc』 的登入失敗。 原因:令牌型伺服器存取驗證失敗,發生基礎結構錯誤。 檢查先前的錯誤。
原因
當您使用 SQL Server 實例設定為使用的相同埠來設定Service Broker 的 TCP 端點時,就會發生此錯誤。 您可以執行下列查詢來取得端點清單:
SELECT * FROM sys.tcp_endpoints
注意事項
如《在線叢書》主題sys.tcp_endpoints (Transact-SQL) 中所述,此檢視不包含 SQL Server 實例目前設定為使用的埠和通訊協定相關信息。 若要尋找該資訊,請參閱 SQL Server 組態管理員。
解決方案
方法 1:使用 DROP ENDPOINT (Transact-SQL) 命令,卸除造成問題的端點。
例如,若要卸除名為 的
TestEP
端點,您可以使用下列命令:DROP ENDPOINT TestEP
方法 2:使用 ALTER ENDPOINT (Transact-SQL) 命令,將端點變更為使用不同的埠。
例如,若要將名為 的
TestEP
端點變更為使用不同的埠,您可以使用下列命令:ALTER ENDPOINT TestEP as tcp (listener_port=1980)
其他相關資訊
其他 TCP 端點也可能會發生類似問題,例如針對資料庫鏡像所建立的端點,而 SQL Server 啟動時的錯誤訊息也會隨之變更。