我有一个.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
答案 0 :(得分:2)
尝试以下操作:
telnet HC-SERVER-04 1433
如果第2步失败:在端口号为1433
和1434
的SQL Server防火墙中创建规则以接受传入的连接,然后再次尝试telnet(如果telnet有效) ,应用程序应该可以连接
SQL Browser
服务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; ...