2010-07-09 52 views
1

一點背景:SqlConnection的錯誤命名管道提供商

我有一個Windows .NET應用程序正在使用由在北美大約40場的員工。該程序允許用戶在現場輸入數據(遠離互聯網訪問),然後在晚上同步到我們的Sql Server 2005數據庫。幾天前,我的兩個用戶報告當他們執行一個試圖連接到我們的服務器數據庫(使用.NET的SqlConnection類)的操作時報告出現以下錯誤。

System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

我們的現場員工通常是經營酒店的Wi-Fi連接,並在第一次我以爲他們都不約而同的「不合作」的網絡在同一天得到。第二天,轉移到不同的酒店,這個問題的其中一個用戶失去了問題,但繼續爲另一個用戶。

除了提供錯誤信息,這種背景的目的是要指出的是,

  • 這是第一次有超過一年的使用本軟件發生在這個問題上,和
  • 多數的用戶在使用相同的軟件連接到我們的服務器數據庫時沒有任何問題。

這讓我很猶豫,認爲問題出在服務器上(大多數論壇和博客我讀過這個錯誤提供了確保SQL Server配置正確的步驟)。

發現錯誤消息的命名管道提供商部分,我猜,也許該用戶的計算機或網絡是導致它試圖通過管道而不是TCP連接,所以我也嘗試將服務器配置成允許TCP/IP和命名管道進行遠程連接,它只在以前設置爲TCP/IP。更改此設置後,此用戶繼續出現該錯誤。

所以,現在我要對這個用戶的計算機/軟件/互聯網連接有什麼特別的問題進行頭腦風暴,這會阻礙它無法連接到我們的SQL Server。

我們的連接字符串使用我們的服務器的URL(而不是IP地址),我想知道他的筆記本電腦是否有問題找到它的地址。但是,他能夠訪問從同一個URL託管的網站,所以我想這個問題在其他地方。

任何想法將不勝感激。謝謝!

回答

1

是否有可能被酒店的防火牆阻止,該防火牆可能只允許某些端口上的流量?

+0

我想到了這一點,但它並沒有解釋爲什麼我們以前從未遇到過這個問題,現在有一個人在兩個不同的酒店裏有這個問題三個晚上。作爲一個便箋,他告訴我,他每次在這個地區都住在這些酒店,而且從未遇到過這個問題。 – 2010-07-09 13:11:28

3

您可能已經很久以前解決了這個問題,或者對於那些在連接到SQL服務器實例時遇到與Error 40 /命名管道問題類似的問題,下面的簡單解決方案適用於我們:

通過在連接字符串中添加前綴,可以強制客戶端程序使用TCP(或命名管道或其他可用方法)。

對於。NET的SQLConnection例如,指定的SQLConnection的連接字符串中,像這樣:

Server=tcp:192.168.0.1;Integrated Security=SSPI; database=sampledb 

See this blog entry獲取更多信息。

相關問題