【发布时间】: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 服务器吗?
-
所以应用程序使用当前 Windows 登录用户登录?可能是其他帐户?
-
由于您必须等待 20-30 秒直到异常发生,我强烈建议这可能是由于防火墙或域网络配置更改。
-
@Bridge:我检查了这个步骤中的答案,但没有任何帮助:-( - @Rubens 应用程序应该使用用户的凭据。但是,我试图访问的数据库是一个组织中的所有用户都可以访问。-@ Tomas:我尝试在关闭防火墙(服务器和客户端)的情况下执行此操作,结果返回相同的错误。
标签: c# sql-server-2008