使用 OS X 上的 .Net 代码连接到 SQL 服务器

Connecting to SQL Server with .Net code on OS X

我正在尝试移植一个 Web api 作为 SQL 服务器数据库的前端。 Web api 在 Windows 下工作正常,当部署到 IIS 时,在 Windows 上从 .Net Core 工作,但是当 运行 来自 OSX 时会出现连接错误] 或 Linux.

Visual Studio 在 Windows 中工作的连接字符串是

connectionString="data source=A\B;initial catalog=C;
persist security info=True;user id=X; password=Y;    
MultipleActiveResultSets=True;App=EntityFramework" 
providerName="System.Data.SqlClient"

然后 t运行 被指定为 .Net 核心变体的连接字符串:

Server=A\B;Database=C;user id=X;password=Y;

该项目编译正常,甚至可以在 Windows 中的 .Net 核心下工作,但当 运行 来自 *nix 机器时崩溃。

错误是:

Unhandled Exception: System.Data.SqlClient.SqlException: 
A network-related or instance-specific error occurred while 
establishing a connection to SQL Server. The server was not found or 
was not accessible. Verify that the instance name is correct and that 
SQL Server is configured to allow remote connections. (provider: TCP 
Provider, error: 35 - An internal exception was caught) --->
System.AggregateException: One or more errors occurred. (No such device
or address) ---> 
System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No
such device or address

我可以 ping 地址,但我想有效地址 (A) 和服务器实例 (B) 的组合在 *nix 下不能使用简单的斜杠。

服务器=A\B;数据库=C;用户id=X;密码=Y;

说您正在 Windows 机器上访问 B 实例,其 Netbios 名称是 A。它工作的 windows 机器可能是 "A" 本身。

对于远程连接,虽然有些事情你应该做的:

  1. SQL 服务器实例应设置为允许远程连接。
  2. SQL 服务器侦听的端口必须启用才能在防火墙上访问。
  3. 如果不是默认端口 (1433),最好使用 IP 地址和端口号来代替 Netbios 名称。

您可以开始尝试(其中 1.2.3.4 是 windows 机器的 IP):

1.2.3.4\B;Database=C;uid=X;pwd=Y

有关 SQL Express 在主机上的详细安装和设置,启用远程访问,然后从远程计算机访问,您可以观看我的短视频系列。这些视频是关于我的应用程序的安装,但其中大部分包含安装 MS SQL 服务器和从远程位置访问。这是一个由 4 部分组成的系列,这是第一部分的 link:

AccuSQL Installation 1/4