一个应用程序突然无法再连接到数据库。其他应用程序连接正常
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 中)已更改并且它给了我这个错误]
【讨论】:
以上是关于一个应用程序突然无法再连接到数据库。其他应用程序连接正常的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 React Native 将 Socket io 连接到 https
SQL Server Express 连接到 .mdf 文件
突然无法使用 PushSharp 连接到 APNS 沙箱环境