【问题标题】:Invalid connection string when connecting to SQL Server Express连接到 SQL Server Express 时连接字符串无效
【发布时间】:2018-03-07 08:20:25
【问题描述】:

我尝试了可以​​在互联网上找到的每一种变体。一切。而且每次我得到同样的异常时:

System.Data.SqlClient.SqlException: '建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:TCP 提供者,错误:25 - 连接字符串无效)'

有了这个奇怪的内部异常:

SocketException:操作成功完成

当我直接指定端口时,我会得到这个奇妙的异常:

试图以访问权限禁止的方式访问套接字

无论如何,它都不起作用。此外,我希望在测试时打开 MS SQL Management Studio(这是唯一可能阻塞端口的进程)。

那么为什么它不起作用? Management Studio 可以毫无问题地与IP\InstanceName 连接。为什么System.Data.Sql.SqlConnection 类不能这样做?

        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
        builder.DataSource = "tcp:***.***.***.***\\SQLEXPRESS";
        builder.InitialCatalog = "MyDB";
        builder.Password = "MyPass";
        builder.UserID = "ID";
        builder.IntegratedSecurity = false;
        _connection = new SqlConnection(builder.ToString());

仅供参考:我使用的是 ConnectionStringBuilder,所以应该没有任何问题。服务器名称、实例名称、SQL 用户和密码都有效,我确实明确设置了Integrated Security = False

【问题讨论】:

  • 请分享您的连接字符串
  • 你能分享你的连接字符串吗?
  • 给你。添加代码。
  • 这里有一些你可以尝试的。在您计算机上的任意位置创建一个.TXT文件并将其扩展名重命名为.UDL 现在双击该文件,您将看到ADO 窗口以使用test connection 按钮构建一个连接字符串。使用此窗口有时会提供其他/更好的错误消息,如果您使此连接正常工作,则可以在 notepath 中打开 UDLfile,您将在其中看到可以使用的完整连接字符串
  • 还是不行。我已经试过那个字符串了。 C# 中的 SqlException 而 ADO 窗口确实连接成功...

标签: sql-server system.data


【解决方案1】:

问题是(不是很清楚)UWP 需要能力才能运行该代码。我在某处读到您需要 Enterprise Authentication ,而这不是。由于我的程序和服务器位于封闭的专用网络中,因此我启用了 Private Networks (Client & Server)

您需要的是Internet(客户端和服务器)。遗憾的是,这些异常并没有暗示这一点,而且 UWP 上的 SqlClient 要求它工作这一事实几乎没有被提及或压力不够,因此您不会忽视它。

在此.Net Standard issue 中找到解决方案。

【讨论】:

  • 这个问题已经让我发疯了好几天,这个解决方案是第一个真正让我能够连接到数据库的东西。我仍然得到一个错误,但至少我正在连接它......进步!谢谢!
【解决方案2】:

首先尝试使用 SQL Server Management Studio 连接到该数据库。 如果您收到相同的错误,则表示服务器存在问题,而不是(或不仅)您的连接字符串。 以下是一些可能性:

1- 从这部分删除 'tcp:':builder.DataSource = "tcp:...强>\SQLEXPRESS";

2- 在服务器上,SQL Server 服务(SQL Server 或 SQL Server 浏览器)已停止。 激活 go Services 并启动停止的服务。

3- 可能是服务器不接受远程连接: 在这种情况下在服务器上打开 SQL Server 配置管理器

并激活 tcp ip。

您应该在此操作后重新启动 SQL Server 服务。

告诉我它是否适合你。

【讨论】:

  • 如我所说,我可以使用 IP\Instance 连接 Management Studio。这绝对是.Net 方面的问题。端口设置为允许在服务器的防火墙中。例如:我们通过实体框架连接到另一个程序中的服务器。在那里它工作正常。此外:我正在.Net Standard 2.0 上开发 UWP 应用程序。
  • 您是否尝试从这部分中删除 'tcp:' ? builder.DataSource = "tcp:***.***.***.***\\SQLEXPRESS";
  • 是的。我什么都试过了。 IP-Instance、IP-Port、Computername-Instance,……没有任何作用。
  • 你能试试这样吗:builder.DataSource = @"..***.***\SQLEXPRESS";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2014-10-16
  • 1970-01-01
相关资源
最近更新 更多