【问题标题】:Cannot connect to any remote database using SqlConnection无法使用 SqlConnection 连接到任何远程数据库
【发布时间】:2015-02-10 09:11:29
【问题描述】:

我无法从 C# 连接到特定的 SQL Server 2008 数据库服务器。

我能够使用 SSMS 进行连接,并使用 SQLCMD 运行查询,但是当我尝试使用 SqlConnection 从 C# 进行连接时,它无法打开与 SqlException 的连接:

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

这是我的代码:

using (SqlConnection conn = new SqlConnection(@"Server=LDNPSM050000137\PLN000000014T;Initial Catalog=MiscData;Integrated Security=True;"))
{
    //exception occurs on this line
    conn.Open();

    //use connection

    conn.Close();
}

我使用 ODBC 得到了类似的响应:

string connectionString = @"Driver={SQL Server Native Client 10.0};Server=LDNPSM050000137\PLN000000014T;Database=MiscData;Trusted_Connection=yes;";
using (OdbcConnection connection = new OdbcConnection(connectionString))
{
    connection.Open();
}

这会因 OdbcExcpetion 失败:

错误 [08001] [Microsoft][SQL Server Native Client 10.0]SQL Server 网络接口:查找指定的服务器/实例时出错 [xFFFFFFFF]。

ERROR [HYT00] [Microsoft][SQL Server Native Client 10.0]登录超时过期

错误 [08001] [Microsoft][SQL Server Native Client 10.0]在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。

我检查了服务器和实例名称是否正确,并且服务器配置为允许远程连接,因为我可以通过 SSMS 进行连接。有没有人对问题可能是什么或如何解决这个问题提出建议?

更新:
如果这有助于某人诊断问题 - 这是特定于我的机器/用户帐户的。我的同事可以从他的机器上很好地运行代码。我还可以使用对ServerInitial Catalog 进行适当更改的连接字符串连接到我的本地实例。

所有远程数据库服务器都出现此错误。

【问题讨论】:

  • 你检查过SQL服务是否在运行吗,你显示的第一个错误通常意味着它没有运行。
  • 我想这与LDNPSM050000137\PLN000000014T 有关。这甚至是一个有效的计算机名称吗?如果您打开命令提示符并执行nslookup LDNPSM050000137\PLN000000014T,您会得到什么?
  • 您没有指定数据库名称
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • C# 代码是否在您与 SSMS 成功连接的同一台机器上运行?

标签: c# sql-server-2008


【解决方案1】:

我不确定这是否特定于我公司的特定 IT 基础架构 - 但这对我不起作用的原因是该项目保存在存储在网络共享上的“我的文档”中。显然,当执行代码位于网络共享上时,.NET 将不允许您连接到远程数据库服务器 - 当我将项目复制到本地驱动器时它工作正常。我正在使用 Windows 7 和 Visual Studio 2012。

【讨论】:

  • 我不会与你所看到的争论,但我有点怀疑这是真正的原因。项目的保存位置无关紧要。一定还有其他因素。
【解决方案2】:

默认情况下,网络共享具有部分信任,因此当项目位于本地驱动器上时可以正常工作,例如连接到远程服务器,不会从网络位置。

您可以完全信任网络位置 (https://msdn.microsoft.com/en-us/library/zdc263t0(VS.80).aspx) 或将您的项目移动到本地驱动器上。

【讨论】:

    【解决方案3】:

    我认为问题在于连接字符串中的服务器值:

    来自MSDN

    我认为你需要这样做:

    • 服务器=tcp:LDNPSM050000137\PLN000000014T
    • 服务器=np:LDNPSM050000137\PLN000000014T

    取决于您是要使用 TCP 还是命名管道...

    【讨论】:

      猜你喜欢
      • 2019-10-16
      • 2019-11-01
      • 2017-06-22
      • 2021-06-12
      • 2018-12-29
      • 2016-12-07
      相关资源
      最近更新 更多