2012-02-28 144 views
6

即將發生的一個非常神祕的問題:P無法遠程訪問SQL Server 2008 R2的實例

我有一臺配置了靜態IP的服務器。我已經安裝了帶有附加實例(ITAPP)的SQL Server 2008 R2。現在,當我使用IP來訪問SQL Server的下面的事情發生了:

客戶機:

sqlcmd -S XXX.XXX.XXX.XXX -U sa -P mypass 

連接成功....

但是當我使用:

sqlcmd -S XXX.XXX.XXX.XXX\ITAPP -U sa -P mypass 

HResult 0xFFFFFFFF, Level 16, State 1 SQL Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].

Sqlcmd: Error: Microsoft SQL Native Client : 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..

Sqlcmd: Error: Microsoft SQL Native Client : Login timeout expired.

即使在同一臺機器上(SQL Server的安裝位置),使用SQL Server Management Studi O操作。我在兩臺計算機上都放了防火牆,甚至允許ITAPP(共享內存,命名管道,TCP/IP)的所有協議也設置爲Allow Remote connection爲true。

當我使用127.0.0.1\SQLITRAX連接它立即連接的服務器機器時,還有一件事。

請幫我從這個爛攤子:)

+1

爲什麼如果您使用的是2008年,您的錯誤消息說SQL 2005? – Simon 2012-02-28 09:55:25

+0

sql server 2008 – Wasif 2012-02-28 12:01:02

回答

16

也許是因爲它是一個命名實例上遠程服務器。
命名實例不使用SQL Server標準Tcp-port 1433,只有默認(未命名)實例使用1433端口。
任何其他「命名」實例只是在另一個端口上偵聽。
因此,您應該檢查SQL-Server配置程序,在哪個TCP端口正在偵聽,然後告訴客戶端連接到此端口。
再說說你的命名實例正在偵聽端口12345,則客戶端應該連接使用下列命令

sqlcmd -S XXX.XXX.XXX.XXX,12345 -U sa -P mypass 

當您指定的TCP端口,那麼你就不需要實例的名稱。
在我的理解中,實例的名稱是SQL Server服務查找此命名實例正在偵聽的TCP端口的一種方式。
但這個工作你的客戶需要能夠訪問解決SQL Server實例的名稱等其他服務(也許是SQL Server代理/ SQL服務器瀏覽器,但我不知道)

更新
以下屏幕截圖顯示了爲SQL Server命名實例設置TPC端口的位置。 How to check the TPC listening port of a SQL Server named instance

那麼,哪個TCP端口就是你命名的SQL Server偵聽實例?

+1

我剛剛更新了屏幕截圖的響應,這裏是查找服務器正在偵聽的TCP端口的位置 – Max 2012-02-28 15:13:45

+0

感謝MAX提供幫助 – Wasif 2012-02-29 12:50:57

+0

感謝您提供關於端口的提示。基本上它幾乎解決了我的問題。我唯一需要做的是在Windows防火牆和高級安全向導中爲這個特定端口創建一個入站規則。 – MacGyver 2014-07-17 08:39:44

3

SQL Server瀏覽器服務需要訪問能夠連接到命名實例。

關於它做什麼和哪些端口的詳細信息,請參閱this article在防火牆上打開

technet article提供了一個方便的腳本打開所有所需的端口

+0

我們已經做了 – Wasif 2012-02-28 09:39:55

+0

還檢查了病毒掃描程序? – 2012-02-28 09:43:26