首页 > 解决方案 > .NET Core 无法连接到远程 SQL Server 数据库

问题描述

我有一个 .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=[servername]\[instanz];Database=IBCore_Lange;User Id=sa;password=XXX"
  }

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

启动.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

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

解决方案


尝试以下操作:

  1. 确保通过 SQL Server 配置管理器启用 TCP/IP 协议。此外,请确保未配置自定义端口,以获取详细信息
  2. 从远程主机的命令提示符执行telnet HC-SERVER-04 1433(从您尝试连接 SQL 服务器的位置)

如果步骤 2失败:使用端口号在 SQL Server 的防火墙中创建规则14331434接受传入连接,然后重试 telnet,如果 telnet 工作,应用程序应该能够连接

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

推荐阅读