Sql-Server-2005

使用連結伺服器和從 SQL 代理作業呼叫的儲存過程時,如何修復 SQL Server 2005 中的登錄超時?

  • February 2, 2017

我有一個在 ServerA 上執行的 sql 代理作業。該作業執行一個儲存過程ServerA.DatabaseA.dbo.SPROC_A,在這個儲存過程中,有一個查詢從ServerB.DatabaseB.SchemaB.TableB 中選擇數據。從 ServerA 到 ServerB 設置了一個連結伺服器,其安全上下文設置為:“使用登錄名的目前安全上下文進行創建”。當作業執行儲存過程並且儲存過程嘗試從遠端表中進行選擇時,將引發以下錯誤:

Executed as user: domain\user. 
Named Pipes Provider: Could not open a connection to SQL Server [1450]. [SQLSTATE 42000] (Error 1450)  
OLE DB provider "SQLNCLI" for linked server "ServerB" returned message "Login timeout expired". [SQLSTATE 01000] (Error 7412)  
OLE DB provider "SQLNCLI" for linked server "ServerB" returned message "An error has occurred while establishing a connection to 
the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does 
not allow remote connections.". [SQLSTATE 01000] (Error 7412).  The step failed.

我已確保遠端伺服器允許遠端連接並且

$$ domain\user $$login 具有對遠端伺服器和數據庫的適當訪問權限。 有人對此有解決方案嗎?它最初是嘗試通過網路執行 SQL 身份驗證的問題,因此我們創建了域使用者,現在我遇到了這個超時問題。

編輯

我們現在已經在生產伺服器上啟用了命名管道,但我仍然收到錯誤消息。

Executed as user: <domain>\<user>. Named Pipes Provider: Could not open a connection to SQL Server [1450]. [SQLSTATE 42000] (Error 1450)  OLE DB provider
"SQLNCLI" for linked server "<remote server>" returned message "Login timeout expired". [SQLSTATE 01000] (Error 7412)  OLE DB provider "SQLNCLI" for linked server "<remote server>" returned message "An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.". [SQLSTATE 01000] (Error 7412).  The step failed.

有任何想法嗎?

SQL 代理將使用共享記憶體連接到本地伺服器。實例將嘗試使用命名管道相互通信。您可以通過在 SQL Server 客戶端網路實用程序 (cliconfg.exe) 中創建別名並將別名設置為使用 TCP 來調整此設置。

錯誤“命名管道提供程序:無法打開與 SQL Server 的連接

$$ 1450 $$.” 讓我想到伺服器 B 沒有啟用命名管道協議(您可以檢查 SQL Server 配置工具)。 您可以在 Management Studio 中無錯誤地執行查詢(連接到伺服器 A 從 B 獲取數據)嗎?

引用自:https://dba.stackexchange.com/questions/1382