sql-server - Docker 容器无法连接到远程服务器上的 SQL Server

标签 sql-server docker asp.net-core

我有一个容器托管 ASP.NET Core 应用程序,但它无法连接到远程服务器上的 SQL Server。

错误是:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.



这是我已经检查过的:
  • 尝试禁用主机和数据库服务器上的防火墙。 : 仍然得到错误
  • 编辑连接字符串以使用 IP 和端口:仍然出现错误
  • 应用容器ping数据库服务器:可以正常ping数据库服务器
  • 通过SQL Server Management Studio连接数据库服务器:可以正常连接

  • 所以我认为容器可以看到数据库服务器但无法连接。我还应该检查什么?

    非常感谢您的帮助。

    更新

    Dockerfile:
    FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 1433
    
    #our sql server was use this port for connect
    EXPOSE 64608
    
    FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
    WORKDIR /src
    
    COPY Web.API.sln ./
    COPY MyProject.Core/*.csproj ./MyProject.Core/
    COPY MyProject.API/*.csproj ./MyProject.API/
    
    RUN dotnet restore
    COPY . .
    
    WORKDIR /src/MyProject.API
    RUN dotnet build -c Release -o /app
    
    FROM build AS publish
    RUN dotnet publish -c Release -o /app
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app .
    ENTRYPOINT ["dotnet", "MyProject.API.dll"]
    

    运行 Docker 命令:
    docker build -t myproject-api:latest .
    
    docker run -d -p 7991:80 --name myproject-api myproject-api:latest
    

    连接字符串:
    "data source=172.16.0.88\\SQL_DEV,64608; initial catalog=MyProject; persist security info=True; user id=myuser; password=mypassword;"
    

    最佳答案

    这很可能是因为连接字符串。

    将您的连接字符串更改为如下所示

    Server=172.16.0.88\\SQL_DEV,64608;Database=MyProject;UserId=myuser;Password=mypassword
    

    或者
    Server=172.16.0.88,64608;Database=MyProject;User Id=myuser;Password=mypassword
    

    哪个有效。

    关于sql-server - Docker 容器无法连接到远程服务器上的 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58901356/

    相关文章:

    sql - 将列添加到 SQL Server 数据库中的表并使用案例设置默认值

    sql-server - 如何在 SQL Server 数据库中设计用户/角色架构?

    sql - 连接两个表时计算不同的计数

    hadoop - 创建 BigInsights (IBM Hadoop) Docker 镜像,sysctl 问题

    c# - 如何使用 Entity Framework Core 功能来更改我的数据库?

    sql-server - 对连接管理器 <Excel 连接管理器> 的 AcquireConnection 方法调用失败,错误代码为 0xC0202009

    linux - 如何在windows中运行docker镜像

    docker - 覆盖图形驱动程序不支持 SELinux

    docker - 使用容器编排处理 EF Core 迁移

    c# - MbDotNet Mountebank .Net 客户端抛出无法建立连接,因为目标机器主动拒绝它