2013-03-13 80 views
0

我知道這是SO上最受歡迎的問題之一:着名的「SQL錯誤26」不同之處在於我的C#應用​​程序第一次成功建立連接,然後拒絕第二次建立連接。我重新啓動計算機,應用程序第一次建立連接,然後再次重新啓動。SQL網絡接口,錯誤:26在Windows重啓後消失

,我可以建立在第一時間讓我自信地認爲,一個連接的事實:我的服務器名是正確的,我的實例名稱是正確的,我用的用戶名和密碼組合是正確的,服務器計算機上時,服務器上的SQL Browser服務正在運行,並且我可以通過防火牆。

我有一大堆的方法,這些方法都非常相似於以下內容:

private static string connection_string = @"Server=my_server\MS_SQL;User Id=user1;Password=password1" 

public static List<string> GetListOfExistingItems(int item_id) 
    { 
     List<string> list_items = new List<string>(); 

     try 
     { 
      using (SqlConnection sql_conn = new SqlConnection(connection_string)) 
      { 
       sql_conn.Open(); 

       SqlCommand sql_comm = new SqlCommand("SELECT Name FROM dbo.table1 WHERE ID=" + item_id, 
                sql_conn); 

       using (SqlDataReader sql_reader = sql_comm.ExecuteReader()) 
       { 
        while (sql_reader.Read()) 
        { 
         list_items.Add(sql_reader["Name"].ToString()); 
        } 
        sql_reader.Close(); 
       } 
      } 
     } 
     catch (Exception excp) 
     { 
      throw new Exception(excp.Message); 
     } 
     return list_items; 
    } 

一些有趣的事實:

  • 重新啓動,解決了這個問題(一次)。
  • 註銷並登錄不能解決問題。
  • 如果我不關閉應用程序,而是多次運行查詢,則錯誤不會顯示。
  • 運行我的應用程序並關閉一次後,我無法從SQL Server Management Studio連接到我的數據庫。
  • 當我重新啓動計算機時,看到沒有列出任何程序的「等待後臺程序關閉」。我等待一段時間(也許10-20秒),消息消失,電腦最終重新啓動。

在此先感謝。

+0

似乎很明顯,數據庫服務器拒絕同一用戶或計算機或IP或MAC的後續連接。首先,確保在完成連接時關閉連接,然後檢查服務器配置以查找管理員。 – 2013-03-13 19:09:54

+0

您的應用程序是否創建了一個已經打開的連接?或者,您的應用程序是否以耗盡服務器資源的方式查詢數據庫? – Greg 2013-03-13 19:12:50

+0

@PieterGeerkens我打開的每個連接都是唯一的,並且嵌套在它自己的使用塊中,如上所示。請您詳細說明「檢查服務器配置以查找州長」? – 2013-03-13 19:37:51

回答

0

某處你沒有關閉你的連接。

我的下一個故障排除步驟是在sql_conn.Open();的字符串中搜索您的代碼(全部),並找到不在使用塊中的一個或多個,否則不會顯式關閉。

+0

我不僅搜索'sql_conn.Open();'我也搜索了'Open();'沒有運氣 – 2013-03-13 19:43:44

相關問題