无法使用.NET Core 2.0在Ubuntu 16.04服务器上本地连接到SQL Server

时间:2018-04-18 17:33:57

标签: c# json sql-server

我有一个干净的.NET Core 2.0 webapp并使用nginx在Ubuntu 16.04服务器上运行。

我的appsettings.json包含:

"ConnectionStrings": {
   "Database": "Server=myip;Database=mydb;Uid=myuser;Pwd=mypassword",
   "providerName": "Sql.Data.SqlClient"
},

我已在单独的服务器上安装了SQL Server,它正常运行:

user@server:~$ sudo systemctl status mssql-server.service
● mssql-server.service - Microsoft SQL Server Database Engine
   Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-04-18 19:05:37 CEST; 20min ago
     Docs: https://docs.microsoft.com/en-us/sql/linux
 Main PID: 1016 (sqlservr)
   CGroup: /system.slice/mssql-server.service
           ├─1016 /opt/mssql/bin/sqlservr
           └─1197 /opt/mssql/bin/sqlservr

我成功地部署了我的应用程序,因为我与我的模型进行了互动,所以它正在运行。但是,当我尝试在我的机器上本地运行相同的项目(从服务器)时,它在控制台中显示以下错误:

Executing handler method OnGetAsync with arguments ((null)) - ModelState is Valid
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 2.0.2-rtm-10011 initialized 'WebappContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
  

失败:Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware [0]

     

执行请求时发生了未处理的异常

     

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

所以我的主要问题是:为什么我在运行相同(部署)的项目时,如果它在我的机器上本地运行时无法连接到数据库?

1 个答案:

答案 0 :(得分:0)

检查您的防火墙,您必须允许连接到C:\ Program Files \ Microsoft SQL Server \ MSSQL12.SQLEXPRESS2014 \ MSSQL \ Binn \ sqlservr.exe

确保连接字符串对于您的计算机是正确的,因为它可能与您服务器上的数据库不同