none
關於無法開啟至SQL Server的連接;同樣程式,不同機器,命運不同 RRS feed

  • 問題

  • 開發電腦

    作業系統:WIN XP PRO SP2

    工具:VS2005 Team System

    資料庫: SQL 2000 標準版

     

    顧客電腦

    作業系統:WIN XP PRO SP2

    工具:VS2005 Standard Edition

    資料庫: SQL 2000 標準版

     

    資料庫伺服器

    WIN 2003 SP1

    資料庫: SQL 2000 企業版

     

    此程式為WIN FORM程式,連接到資料庫伺服器處理資料,在開發電腦跑的時候沒有錯誤,但在顧客電腦跑的時候卻出現

    [在建立連接至伺服器時發生錯誤。當連接至 SQL Server 2005 時,失敗的原因可能是,在預設設定下,SQL Server 不允許遠端連接。 (provider: 具名的管線提供者, error: 40 - 無法開啟至 SQL Server 的連接)]的錯誤。

    但這個錯誤不是一開始就會發生的,也就是若有20筆資料,它會在第8、15筆發生上述問題,每次發生的頻率不一。

     

    開發電腦與顧客電腦皆用同一條網路線。

    相同的程式碼,在顧客電腦編譯後,拿到開發電腦,情況依舊,開發電腦沒問題,顧客電腦還是錯。

    連線字串如下:

    server=DB Server的IP;database=HmisaDB2;uid=sa;pwd=;

     

    敝人想請問:

    1、關於這個錯誤訊息真的跟SQL2005有關嗎? 可是連接的DB SERVER並沒安裝SQL2005。

    2、請各位不吝指教,感謝。

    2007年7月16日 上午 02:17

所有回覆

  • 單只這個錯誤訊息
    [在建立連接至伺服器時發生錯誤。當連接至 SQL Server 2005 時,失敗的原因可能是,在預設設定下,SQL Server 不允許遠端連接。 (provider: 具名的管線提供者, error: 40 - 無法開啟至 SQL Server 的連接)]的錯誤。
    論壇上已經有許多這樣的討論與解答,
    你可以參考以下討論看是否對你有幫助。

     

    http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=1610731&SiteID=14

    http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=587191&SiteID=14

    http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=1077447&SiteID=14

    http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=590274&SiteID=14

     

    這邊篇KB我覺得可以解決你的問題,你可以先參考看看。
    如何設定 SQL Server 2005 為允許遠端連接
           http://support.microsoft.com/kb/914277/zh-tw

    2007年7月16日 上午 02:33
  • 1. 和版本無關,那只是告訴你 SQL Server 2005 預設是不允許 Remote Connection 的。

    2. 你的防火牆有沒有打開 (Port 1433) ?

    3. 你使用的帳戶是否已授權 SQL Server 存取 (Windows 驗證時會有這樣的問題) ?

    4. 帳戶和密碼有沒有錯 ?

    2007年7月16日 上午 02:34
    版主
  •  DotJum 寫信:

    這邊篇KB我覺得可以解決你的問題,你可以先參考看看。
    如何設定 SQL Server 2005 為允許遠端連接
           http://support.microsoft.com/kb/914277/zh-tw

     

    人家是用 SQL Server 2000 ...

    這篇比較好:http://support.microsoft.com/kb/827422/zh-tw

    2007年7月16日 上午 02:37
    版主
  •  小朱 寫信:
     DotJum 寫信:

    這邊篇KB我覺得可以解決你的問題,你可以先參考看看。
    如何設定 SQL Server 2005 為允許遠端連接
           http://support.microsoft.com/kb/914277/zh-tw

     

    人家是用 SQL Server 2000 ...

    這篇比較好:http://support.microsoft.com/kb/827422/zh-tw

    抱歉 小朱!,我沒有注意看清楚,不好意思。請看小朱這篇 SQL SERVER 2000 的KB比較正確。

    2007年7月16日 上午 02:44
  • Dear 小朱:

    DB SERVER的防火牆是關畢的,沒作用。

    帳戶密碼確認過可用。

    其實小弟比較狐疑的是,相同的程式段(存取 DB SERVER)跑迴圈,跑前面幾次都沒問題,但跑到某個次數後就出問題了。

    若是帳號密碼有問題,或PORT 沒開,應該跑第一次就會掛了吧?不知道小弟這樣想有沒有錯?

    謝謝指教。

    2007年7月16日 上午 02:51
  • 那就要看你的程式寫法,以及 SQL Server 2000 的設定了。

    尤其是連線數量,如果你是選 "每一伺服器",而程式中又沒有做好連線管理,以及使用 Connecton Pooling

    的話,你的連線很快就滿了。

    2007年7月16日 上午 03:28
    版主
  • Dear 小朱:

    我認為連線數應該沒爆掉才是,當發生錯誤的時候去看連線數只有1(我是用卸離資料庫的方法,得知目前連線數的,不知道有沒有更好的方法),另外當我把連線字串改為

    server=DB Server的IP;database=HmisaDB2;uid=sa;pwd=;Connect Timeout=1440

    時,程式仍然跑一下子就頓住了,但沒錯誤,就是一下子很順,突然停住,又開始很順。週而復始。

    實在搞不懂明明是相同的程式,換了電腦跑就出錯。

    謝謝指教。

    2007年7月16日 上午 04:33
  • 這種問題我沒有碰過。

    不過建議你檢查:

     

    1. 顧客的 SQL Server 的設定,例如 Server Network Library。

    2. 使用 SQL Server Profiler 檢查指令的執行狀況,看是否有發生鎖定。

    3. 確認顧客的 Windows Server 沒有問題(例如疑似病毒或蠕蟲在作怪)。

    4. SQL Server 應該要更新到最新的 Service Pack。

    2007年7月16日 上午 07:49
    版主
  • 謝謝小朱的建議,我只能再多試試看了。
    2007年7月17日 上午 12:44
  • 你好
    我最近也遇到類似的問題

    我的情況是 一段需要連線到遠端SQL Server 資料庫的程式碼
    在用戶端,不論是用自己撰寫的程式或是使用SQL Server Manager 進行連線
    都會"偶爾"出現同樣的錯誤訊息

    建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。找不到或無法存取伺服器。確認執行個名稱是否正確,以及 SQL Server 是否設定為允許遠端連線。 (provider: 具名的管線提供者, error: 40 - 無法開啟至 SQL Server 的連接) (Microsoft SQL Server, 錯誤: 1326)

    詭異的是並非完全無法連線,有時能夠連線,有時不行,或是使用到一半中斷連線出現上述的錯誤訊息
    小朱版主所說的情況我也都試過,結果都一樣
    同樣的程式碼拿到團隊中同事的電腦測試卻完全這方面的問題
    我只能判斷是否是個人開發環境的問題

    個人開發環境
       Win7 Pro
       VS 2010 Ultimate
       SQL Server 2008R2 Express

    同事的電腦
       Win7 Pro
       VS 2010 Ultimate
       SQL Server 2008 Express

    資料庫似服器
       Win Server 2008 R2
       SQL Server 2008R2

    現在試試重新安裝自己的VS與SQL
    看看情況會不會改變

    • 已編輯 Bearway 2012年1月20日 上午 02:03
    2012年1月20日 上午 02:01
  • 很高興我的問題解決了XD

    先從結果說起
    我的個人電腦中的 1433 port 被佔用了,導致無法連線到遠端資料庫
    原因是我個人電腦中安裝VM,因此我的本機上會有兩組IP
    連線過程中,我的VM並沒有開啟
    利用命令提示字元中下 netstat -an,可以看到被使用的port的情況
    當無法連線時,遠端資料庫的1433port是被VM的IP給佔用了,因此我本機IP才無法連線
    解決的方法就是把VM的IP給停用了

    跟大家分享一下,若遇到同樣的情況可以檢查連下當下的port是否已被佔用

    2012年1月20日 上午 03:35