2012-04-30 107 views
3

我同時使用Microsoft Windows Server 2003企業版在應用程序服務器上運行java和.net應用程序。這些正在被遷移到另一臺應用服務器Windows 2008 64位機器。從Windows 64位連接到SQL Server命名實例

所有應用程序都連接到同一個SQL Server 2005數據庫上的一個命名實例。

到目前爲止,我已經嘗試將應用程序完全按照原樣移動,而不會改變配置文件,從舊盒子到新盒子。

在新的應用程序服務器上,java和.net應用程序都不會連接到數據庫(命名實例)。

JDBC error message: "The connection to the named instance has failed. Error: java.net.SocketTimeoutException: Receive timed out."

The .net error message: "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible."

如果我改變了DB配置到一個是在命名實例上它的工作原理新的應用程序服務器上不

數據庫設置正確,因爲我們可以在舊的應用程序服務器上進行連接。我可以從新的應用程序服務器ping數據庫服務器。

是否有任何理由,這將無法在新的應用程序服務器上工作?

java connection string: "jdbc:microsoft:sqlserver://[dbservername];SelectMethod=Cursor;instanceName=[dbinstance]"

.net connection string: "Server=[dbservername]\[dbinstance];Database=Risk_DB;Uid=[user];Pwd=[pwd];"

UPDATE 每建議的回答後,我得到了實例端口號。我還安裝了SQL Server Management Studio,因此我可以根據問題點消除我的應用程序。從Management Studio中,如果我使用[servername] [instancename],則會在建立與SQL Server的連接時收到「網絡相關或特定於實例的錯誤...」消息但是,當我使用[servername],[港口]。不知道是否有辦法解決這個問題?

UPDATE#2將問題升級到基礎架構/服務器/網絡團隊。他們在新的應用服務器上禁用了Windows防火牆。 Presto,現在我可以連接到Management Studio中的[dbservername] \ [dbinstance],並且所有應用程序都在使用現有的配置文件。

回答

4

你的命名實例將是一個不同的端口上運行。端口1433(默認實例的默認值)可能已打開,並且命名實例正在運行的端口可能被阻止。您可以在錯誤日誌中檢查指定實例的端口(假設您可以在本地連接,在對象資源管理器中展開服務器,展開管理,展開SQL Server日誌,右鍵單擊當前並選擇「查看SQL Server日誌」IIRC ),它會說在啓動時是這樣的:

Server is listening on [ 127.0.0.1 <ipv4> 3587 ]. 

這最後一個數字是,需要從您的遠程計算機和任何網絡設備,它要經過到那裏訪問的服務的端口號。如果你沒有找到這樣的一行,可能沒有爲命名實例啓用TCP/IP。在該服務器上,轉到SQL Server配置管理器,展開SQL Server網絡配置,單擊「Protocols for」並確保右窗格中啓用了TCP/IP。如果您必須啓用此功能,則需要重新啓動SQL Server才能使其生效。

如果已經啓用(或者一旦啓用它並重新啓動服務),您應該能夠刷新此視圖並驗證正在使用的端口,如果右鍵單擊TCP/IP,擊中屬性,並且轉到IP地址選項卡。您可以看到每個IP的當前端口。這裏將會有多個IPn部分和一個IPAll部分。對於每個IP,您可以將「TCP端口」框更改爲您要使用的端口(並將所有「動態TCP端口」框中的任何值刪除爲0)。點擊應用並重新啓動服務。這將再次需要重新啓動服務,但允許您指定特定端口,以便您可以向防火牆添加排除項(或使用已存在的排除項,假定此服務器尚未使用該端口)。

+0

只是爲了進一步確認要檢查的內容 - 可能是舊防火牆在防火牆中有明確的例外,允許它連接到數據庫服務器(這可能是我的IP地址或名稱)。如果是這種情況,請忽略我關於更改/修復SQL Server端口的建議,並與您的網絡管理員討論如何爲新框添加相同的防火牆例外。 –

+0

也可能是SQL Server Browser服務在舊盒子上運行(並因此將命名實例請求動態路由到正確的端口),但未在新服務器上運行。 – Clark

+0

@Clark您應該不需要應用程序服務器上的SQL瀏覽器服務來執行任何操作。我不認爲這個問題是100%明顯的,但我覺得應用程序已經移動,而不是數據庫。仍然可以連接到數據庫的「舊服務器」是舊的應用程序服務器。 –

0

可能的問題:

  • 防火牆阻止可能的連接。
  • 實例名稱與連接字符串中指定的名稱不同。
  • 連接字符串指定一個不同的端口或SQL Server在不同端口上運行,而不是默認的1433
相關問題