【问题标题】:Connecting to SQL Server with .Net code on OS X在 OS X 上使用 .Net 代码连接到 SQL Server
【发布时间】:2017-02-07 09:35:30
【问题描述】:

我正在尝试移植一个充当 SQL Server 数据库前端的 Web api。 Web api 在 Windows 下运行良好,当部署到 IIS 时,在 Windows 上的 .Net Core 上运行,但在 OSX 或 Linux 中运行时会出现连接错误。

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

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"

然后将其转换为 .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 下的简单斜线。

【问题讨论】:

  • 你说崩溃。实际发生了什么?您的 Mac 是否能够解析名称 A 以指向正确的机器?
  • 我用更好的描述更新了这个问题。无论如何,我的机器确实可以ping通A,所以错误可能是A\B的组合,应该以其他方式给出?
  • 什么 A? IP 地址、FQDN、服务器名称?您可以使用任何其他工具连接到服务器吗?仅仅因为您可以 ping 一个地址并不意味着您可以连接到一个命名实例。

标签: sql-server .net-core


【解决方案1】:

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

表示您正在访问 Netbios 名称为 A 的 Windows 机器上的 B 实例。它工作的 Windows 机器可能是“A”本身。

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

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

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

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

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

AccuSQL Installation 1/4

【讨论】:

  • 问题是 Linux 客户端没有被列入白名单,因此无法访问 SQL Server 机器,而 Windows 客户端被列入白名单,因此相同的代码可以正常工作。
猜你喜欢
  • 2013-07-05
  • 1970-01-01
  • 2016-09-08
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
相关资源
最近更新 更多