c# - .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
解决方案
尝试以下操作:
- 确保通过 SQL Server 配置管理器启用 TCP/IP 协议。此外,请确保未配置自定义端口,以获取详细信息
- 从远程主机的命令提示符执行
telnet HC-SERVER-04 1433
(从您尝试连接 SQL 服务器的位置)
如果步骤 2失败:使用端口号在 SQL Server 的防火墙中创建规则1433
并1434
接受传入连接,然后重试 telnet,如果 telnet 工作,应用程序应该能够连接
- 如果进入防火墙后不起作用:重新启动
SQL Browser
服务 - 服务不走运
SQL Browser
,更改连接字符串如下:
Server=HC-SERVER-04,1433;Database=IBCore_Lange;User Id=sa;password=XXX
推荐阅读
- javascript - 如何删除 Electron 中的 devtools Performance 和 ect 选项卡?
- javascript - 引导轮播 - 随机化
- c# - 如何从 C# 中的 API 调用读取/解析非常长的 JSON 响应
- java - 未构建用于过滤 Spring Boot 的 URL 的类
- laravel - Laravel/Bouncer 在门口检查所有权
- salesforce - 无法从闪电组件的助手类调用顶点控制器
- c++ - C++ 从 iostream 故障位集继承
- c++ - 如何使用 decltype 简化此代码?
- java - 方法调用是调用类类型还是实例类型?
- php - 流明文件请求返回一个空对象