一个应用程序突然无法再连接到数据库。其他应用程序连接正常

Posted

技术标签:

【中文标题】一个应用程序突然无法再连接到数据库。其他应用程序连接正常【英文标题】:One application suddenly cannot connect to database anymore. Other applications connect just fine 【发布时间】:2016-09-07 10:05:43 【问题描述】:

我的一个应用程序不再连接到数据库服务器。此应用程序已投入生产 2 年,没有任何变化并且一直有效。

我使用的是 C# 2010 和 MS SQL Server 2008 R2

我收到错误:

“在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确以及 SQL Server 是否已配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)"

内部异常: “访问被拒绝”

使用完全相同的代码、连接字符串、数据库和数据库服务器,我能够与另一个应用程序连接,没有任何错误。

我能够在服务器和数据库上使用 SSMS 进行连接。

查询(如果复制到 SSMS)运行没有问题。

代码:

public DataTable QueryRetrieval(string sqlQuery)
    
        // SP Command
        SqlConnection Conn = new SqlConnection(this.connectionString);
        this.Cmd = new SqlCommand(sqlQuery, Conn);
        Cmd.CommandType = CommandType.Text; // Type of command

        // Declarations (for scope purposes)
        SqlDataAdapter Adapter = new SqlDataAdapter(Cmd);

        DataTable DtResultSet = new DataTable();

        try
        
            // Run the query
            Conn.Open();
            Adapter.Fill(DtResultSet);

            Conn.Close();

            // Return datatable
            return DtResultSet;
        
        catch (Exception Ex)
        
            // Edit the message, rethrow exception
            throw new Exception(
                "DataAccessor.QueryDataTable: Failed to run query '" + sqlQuery + "'\n\n"
                + "Error message: \n--------------\n\n" + Ex.Message);
        
        finally
        
            // Remove the SQL command
            Cmd.Dispose();
            Cmd = null;

            // Remove the SQL data adapter
            Adapter.Dispose();
            Adapter = null;
        

    

连接字符串:“Server=MyServer;Database=MyDB;Trusted_Connection=True;” (我替换了名字。)

程序在 Conn.Open() 上失败;当代码到达该行时,我必须等待 20 或 30 秒,然后抛出异常。

服务器上没有安装更新。 我已经尝试重启服务器(整个服务器,而不是服务)。

有没有人知道什么会导致这种情况发生?

【问题讨论】:

你能从托管应用程序的机器上 ping DDBB 服务器吗? A network-related or instance-specific error occurred while establishing a connection to SQL Server 的可能副本 - 我猜可能是您机器上的防火墙。 所以应用程序使用当前 Windows 登录用户登录?可能是其他帐户? 由于您必须等待 20-30 秒直到异常发生,我强烈建议这可能是由于防火墙或域网络配置更改。 @Bridge:我检查了这个步骤中的答案,但没有任何帮助:-( - @Rubens 应用程序应该使用用户的凭据。但是,我试图访问的数据库是一个组织中的所有用户都可以访问。-@ Tomas:我尝试在关闭防火墙(服务器和客户端)的情况下执行此操作,结果返回相同的错误。 【参考方案1】:

我最近遇到了类似的问题。运行特定项目无法连接,但其他项目和应用程序可以。我重新启动,问题就消失了。尝试重新启动。

【讨论】:

重新启动服务器和客户端。还是同样的问题。 我发现应用程序查询了链接服务器上的数据库。 (我没有写应用程序,所以我错过了这个)。在链接服务器上,一个事务“卡住”,阻塞了这个数据库上的所有其他事务。重新启动链接服务器后,一切恢复正常。 @大家:谢谢支持!【参考方案2】:

根据我在这种情况下的经验,当内部异常显示“访问被拒绝”时,可以确保运行程序的帐户无权访问数据库。

建议您检查您是否正在模拟任何帐户以及是否可以访问数据库。[在我的情况下,用于模拟的帐户的密码(在 web.config 中)已更改并且它给了我这个错误]

【讨论】:

以上是关于一个应用程序突然无法再连接到数据库。其他应用程序连接正常的主要内容,如果未能解决你的问题,请参考以下文章

安卓 4.3 BLE

无法使用 React Native 将 Socket io 连接到 https

SQL Server Express 连接到 .mdf 文件

突然无法使用 PushSharp 连接到 APNS 沙箱环境

无法将 Wamp MySQL 数据库连接到 Android Studio

Meteor 无法连接到 MongoDB