无法访问dockerized SQL Server实例

时间:2020-09-20 08:25:32

标签: sql-server docker

我有一个简单的docker-compose.yml,其中仅包含两个服务,my-apisql-server

version: '3.0' 
services:
  sql-server:
    image: mcr.microsoft.com/mssql/server:2019-latest
    hostname: sql-server
    container_name: sql-server
    ports:
      - "1433:1433"
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=MyPassword01*
      - MSSQL_PID=Express    
  my-api:
    ports: 
      - "8080:5000"         
    depends_on: 
      - sql-server
   ... ommited for clarity

当我docker-compose up --build容器准备好时(我可以通过docker ps进行验证) a7a47b89a17a mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 12 minutes ago Up 11 minutes 0.0.0.0:1433->1433/tcp sql-server

但是我无法使用SSMS访问SQL Server。

SSMS登录窗口:

  • 服务器名称:localhost,1433
  • 身份验证:SQL Server身份验证
  • 用户名:sa
  • 密码:MyPassword01*

错误:

无法连接到localhost,1433。

用户“ sa”的登录失败。 (.Net SqlClient数据提供程序)

PS:我也尝试过

  • 服务器名称:sql-server,1433

但仍然无法访问

2 个答案:

答案 0 :(得分:0)

执行以下代码,该代码将显示公共ipaddress。 代替本地主机使用此ipaddress

docker inspect -f“ {{range .NetworkSettings.Networks}} {{。IPAddress}} {{end}}” mssqltrek-con1。

我点击了以下链接以实现相同的目的。

https://www.sqlshack.com/sql-server-with-a-docker-container-on-windows-server-2016/

答案 1 :(得分:0)

我想您必须进一步调试。我猜您可以做的第一件事是打开容器内的bash,然后尝试从容器连接到SQL数据库。

docker exec -it sql-server "bash"

一旦进入容器bash,然后与sqlcmd连接,

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"

如果您无法在容器内部进行连接,则在设置SQL Server时,我必须假定您的SA密码有所不同。但是,如果这不是问题,则意味着您可以连接到容器内的SQL Server,然后可以放心,计算机上端口1433上的SSMS出了点问题。确保服务器名称正确。