簡體   English   中英

.NET Core 無法連接到遠程 SQL Server 數據庫

[英].NET Core can't connect to remote SQL Server database

我有一個 .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 中,我只能訪問本地數據庫。

啟動文件

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

嘗試以下操作:

  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

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

這里的問題是服務器的命名實例“Server=[servername]\\[instanz]”。 我可以在沒有實例的情況下連接到 SQL-Server。

我還沒有找到具有命名實例的服務器的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM