0

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

提前致谢。

4

1 回答 1

0

某处你没有关闭你的连接。

我的下一个故障排除步骤是对您的代码(全部)进行字符串搜索sql_conn.Open();,并找到不在 using 块中的代码,或者没有明确关闭的代码。

于 2013-03-13T19:24:31.660 回答