2013-03-13 59 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

相关问题