2008-11-07 58 views
2

我在單個服務器上有4個不同的SQL Server 2005實例(用於測試目的)。服務器上沒有默認實例。SQL Server 2005命名爲實例端口問題

由於我最終需要允許跨防火牆與這些實例進行通信,因此我已將每個實例的端口設置爲靜態偵聽服務器的所有IP。

編輯:TCP/IP,共享內存和命名管道都已啓用。威盛已禁用。這些端口是爲TCP/IP協議上的所有IP靜態設置的,並且每個命名實例都使用單獨的端口。

我也有SQLBrowser服務正在運行,並且所有實例都被配置爲允許遠程連接。

一個實例被設置爲默認端口(1433),並且它工作正常。

然而,其他實例表現出非常奇怪的行爲。當我使用網絡中的Sql Server Management Studio連接到它們時(因此我甚至沒有穿過防火牆),該工作室連接時沒有抱怨。然而,當我嘗試展開數據庫列表中的實例,或刷新實例,或者幾乎任何東西,我得到以下錯誤:

標題:微軟SQL Server Management Studio中


無法檢索此請求的數據。 (Microsoft.SqlServer.SmoEnum)

如需幫助,請點擊:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476


附加信息:

無法連接到服務器。 (Microsoft.SqlServer.ConnectionInfo)


與服務器建立了連接,但在登錄過程中發生錯誤。 (provider:命名管道提供程序,error:0 - 無進程管道的另一端。)(微軟SQL Server,錯誤:233)

如需幫助,請點擊:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=233&LinkId=20476


回答

2

The first thing to do would be to try adding the prefix np: or tcp: (for either Named Pipes or TCP/IP) before the name of the server. For tcp/ip, you can also try adding the port number (,1433) after the name of the server. If this is not the default instance, you must add the name of the instance after the name of the server; for example:

> sqlcmd -S 
> tcp:NameOfTheServer\sqlexpress,1433 

編輯:刪除源鏈接,因爲它現在是一個死鏈接

0

嘗試啓用到SQL服務器實例的TCP/IP通信。如果您最終要穿越防火牆,那麼您可能會想要使用TCP/IP而不是命名管道。

1

嘗試爲服務器上的每個實例使用不同的TCP/IP端口。您將需要進入SQL Server配置管理器來更改這些設置。在TCP/IP下,您可以更改端口號,然後在連接字符串或SQL Management Studio中使用這些端口號。

出於好奇,爲什麼你有服務器的實例?你可以使用一個實例並改用多個數據庫嗎?如果您正在使用其他實例進行開發或測試,則可能需要考慮將其移至另一個框。

2

Bofe的回答工作,所以這給了指示的東西是那副用的端口。

事實證明,在命名實例的TCP/IP設置中,我監聽了All協議,然後爲IPAll設置了靜態端口,但爲IP1設置了動態端口。我曾假設,自IP1被禁用後,我不必擔心它,但顯然如果您設置了Listen All,則忽略IP1的啓用屬性。所以,在服務器上只有一個IP地址,並配置IP1動態端口和IPAll靜態端口會引起某種奇怪的衝突。

爲了解決這個問題,我只是將IP1設置爲使用與IPAll相同的靜態端口,啓用了IP1,重新啓動了服務器,並且事情按照他們應有的方式工作,而無需在連接字符串中明確設置端口。