首页 > 解决方案 > Mac 上的 .NET Core 1.1 应用程序和 SQL Server 连接字符串

问题描述

我在将 .NET Core 1.1 应用程序连接到远程 SQL Server 时遇到问题,但仅在我的 Mac 上,因为在 Windows 上一切正常。

说这不是我的应用程序,我只是想让它工作,这是我在 appsettings.Development.json 上的连接字符串:

  "ConnectionStrings": {
    "MesDatabase": "Data Source=x.x.x.x\\BLABLA,49331; Initial Catalog=DBNAME; Uid=sa; Pwd=blablabla"
  }

这是我打开连接时出现的错误:

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

我无法访问服务器,知道吗?我几乎可以肯定这是连接字符串上的一个愚蠢错误,但我找不到它。

我还尝试在 Windows 上创建一个 .udl 文件,使用正确的连接数据对其进行编辑,然后将生成的连接字符串用记事本打开。没什么,在 Mac 上总是“连接字符串无效”。

标签: c#sql-serverasp.net-core

解决方案


正如 Jeroen Monstert 所说:

同时指定实例名称和端口号是没有意义的。要么指定实例名称,然后让 SQL Server Browser 服务为您解析端口,要么指定端口,但忽略实例名称。

我的问题是由于在连接字符串中我同时拥有实例名称和端口,以及 .NET Core 1.1 上的“可能存在错误”,因为 Mac 和 Windows 之间的行为不同。在我的情况下,SQL Server Browser 在服务器上已关闭,因此我需要指定端口,因此我必须从连接字符串中删除实例名称。


推荐阅读