在OS X上使用.Net代码连接到SQL Server

时间:2016-09-29 07:20:12

标签: sql-server .net-core

我正在尝试移植一个充当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下的简单斜杠。

1 个答案:

答案 0 :(得分:1)

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

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

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

  1. 应将SQL Server实例设置为允许远程连接。
  2. 必须启用SQL Server侦听端口以便在防火墙上进行访问。
  3. 如果不是默认端口(1433),最好使用IP地址和端口号,而不是Netbios名称。
  4. 您可以开始尝试(其中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