SQL网络接口,错误:26在Windows重新启动后消失

时间:2013-03-13 18:53:19

标签: c# sql

我知道这是SO上最受欢迎的问题之一:着名的“SQL错误26”不同之处在于我的C#应用​​程序第一次成功建立连接,然后第二次拒绝建立连接。我重新启动计算机,应用程序第一次建立连接,然后需要重新启动。

我第一次建立连接的事实让我有信心:我的服务器名称是正确的,我的实例名称是正确的,我使用的用户名和密码组合是正确的,服务器机器是打开的,SQL服务器上的浏览器服务正在运行,我可以通过防火墙。

我有很多方法都看起来非常类似于以下内容:

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秒),消息消失了,计算机最终重新启动。

提前致谢。

1 个答案:

答案 0 :(得分:0)

某处您没有关闭连接。

我的下一个疑难解答步骤是对sql_conn.Open();的代码(全部代码)进行字符串搜索,找到不在使用块中的代码,否则不会显式关闭。