2011-02-11 241 views
0

我有SQL Server 2000,它也有2個其他的SQL實例。主服務器沒有問題,以後我講的這兩個實例,SQL Server實例的連接字符串

他們分享,

  1. Same machine
  2. Same IP
  3. Same Instance Name
  4. Same Port

我也想知道它是如何完成的。

使用查詢分析器一旦連接,

MyServer\Invent (it connects to first instance) 
MyServer\Invent,1433 (it connects to second instance) 

(是的,它發生。我100%確定,因爲我有在他們裏面單獨的DB)

現在它涉及到的問題,

使用C#SqlConnection,我無法連接到第一個,但可以連接到第二個。

1. Data Source=MyServer\Invent;Persist Security Info=True;Initial Catalog=TEST;uid=admin;pwd=123 
2. Data Source=MyServer\Invent,1433;Persist Security Info=True;Initial Catalog=TEST;uid=admin;pwd=123 

一旦我用它掛了一段時間,並得到以下錯誤消息第一個連接字符串...

「,而與SQL Server建立連接時出現與網絡相關的或特定於實例的錯誤。驗證實例名稱是否正確以及SQL Server是否配置爲允許遠程連接(提供程序:SQL網絡接口,錯誤:26 - 指定的錯誤定位服務器/實例)

在網上搜索這個,很多人說instal凌這樣是可能的。並且一個連接應該使用命名管道(tcp/445)

任何想法如何解決這個問題? 任何可能的連接字符串格式? 無論如何爲命名管道做連接字符串?

+0

僅供參考,我剛剛從Ports使用「企業管理器」進行了檢查,共享1433.毫無疑問。 – 2011-02-11 10:57:58

回答

0

我想也許你的第一個實例實際上並沒有在1433上進行監聽,即使這通常是默認值。

我相信可以使用SQL Server配置實用程序更改默認端口。檢查默認端口是什麼,假設它不是1433,請嘗試在第一個連接字符串中指定它。

這是some info關於如何檢查您的實例正在監聽哪個端口。

編輯:好吧,第一個實例正在偵聽命名管道。也許server=np:MyServer\Invent;將工作,根據this page

+0

我也檢查過...我對此100%有信心。我已經使用以下SP檢查端口 DECLARE @tcp_port爲nvarchar(5) EXEC xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE \ MICROSOFT \ MSSQLSERVER \ MSSQLSERVER \ SUPERSOCKETNETLIB \ TCP', @ value_name ='TcpPort', @value = @tcp_port OUTPUT select @tcp_port – 2011-02-11 10:54:59

+1

您是否嘗試過`使用master Go Xp_readerrorlog`並尋找「正在監聽xxxx:yyyy」? – Blorgbeard 2011-02-11 10:57:36

0

我認爲你的問題是,一臺服務器正在使用不同的端口。所以它使用的是TCP但是是一個不同的端口,你需要弄清楚它使用的是什麼端口,然後將這個端口添加到你的連接字符串中,就像你在使用另一個實例(1433)一樣。

你SQL Server配置管理器。 導航到SQL Server網絡配置節點並展開它。 在子節點中找到實例 現在右側會顯示協議(共享內存,命名管道,TCP等) 雙擊TCP。 在彈出的對話框中,切換到IP地址選項卡。 一直向下滾動到「IP All」部分

它對TCP端口有什麼意義? enter image description here