.NET Core无法连接到远程SQL Server数据库

时间:2019-08-15 12:55:26

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

我有一个.NET Core应用程序作为API。我可以将其连接到本地SQL Server数据库,但不能连接到网络上的其他数据库。

当我尝试使用dbContext访问远程数据库时,出现此错误:

  

System.Data.SqlClient.SqlException
  建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:SQL网络接口,错误:26-指定服务器/实例时出错)

appsettings.json(本地):

  "ConnectionStrings": {
    "DefaultConnection": "Data Source=(localdb)\\mssqllocaldb;Initial Catalog=ib;Integrated Security=True;"
  }

appsettings.json用于远程操作:

  "ConnectionStrings": {
    "DefaultConnection": "Server=HC-SERVER-04\\SQL2012;Database=IBCore_Lange;User Id=sa;password=XXX"
  }

我可以通过SQL Server Management Studio或系统的早期(ASP.NET)版本访问数据库。在Core中,我只能访问本地数据库。

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
            .AddJsonOptions(x => x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);

    services.AddDbContext<ibContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}

生成DbContext

Scaffold-DbContext "Connection String"
         Microsoft.EntityFrameworkCore.SqlServer -Verbose -o {output folder} -t {table to update} -force

3 个答案:

答案 0 :(得分:2)

尝试以下操作:

  1. 确保通过SQL Server配置管理器启用了TCP / IP协议。另外,请确保未配置自定义端口for detailed info
  2. 从远程主机的命令提示符处(尝试连接SQL Server的位置)执行telnet HC-SERVER-04 1433

如果第2步失败:在端口号为14331434的SQL Server防火墙中创建规则以接受传入的连接,然后再次尝试telnet(如果telnet有效) ,应用程序应该可以连接

  1. 如果在进入防火墙后仍不起作用:重新启动SQL Browser服务
  2. 没有SQL Browser服务的运气,请按以下方式更改连接字符串:
Server=HC-SERVER-04,1433;Database=IBCore_Lange;User Id=sa;password=XXX

答案 1 :(得分:0)

这里的问题是服务器“ Server = HC-SERVER-04 \ SQL2012”的命名实例。 我可以在没有实例的情况下连接到SQL Server。

我还没有找到具有命名实例的服务器的解决方案。

答案 2 :(得分:0)

在json文件中,将双\\像"DefaultConnection": "Data Source=db-name\\test2019; ...