当前位置: 首页 > 知识库问答 >
问题:

连接到docker托管的MSSQL失败

习华灿
2023-03-14

我在[本教程]后面有个问题(https://hub.docker.com/r/microsoft/mssql-server-linux/)我试图通过sqlcmd连接到docker托管的MSSQL。

我从windows在PowerShell中执行了以下操作:

docker run -e 'ACCEPT_EULA=Y' --name mssql -e \
 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -it \
 -d microsoft/mssql-server-linux:latest /bin/bash

注意:添加了“-it”和“/bin/bash”,因为如果没有检测到任何活动,docker将自动停止。

我运行了docker container ls-a来验证它是否正在运行:

docker container Is -a 
CONTAINER ID      IMAGE                               COMMAND       CREATED          STATUS          PORTS                    NAMES 
92cfc504ab70      microsoft/mssql-server-linux:latest "/bin/bash"   27 minutes ago   Up 27 minutes   0.0.0.0:1433->1433/tcp  mssql 

我在我的主机上运行telnet local-ip: 1433,它工作正常。

当我执行以下操作时,问题在于:

docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa \
 -P yourStrong(!)Password

错误:

Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:登录超时已过期。Sqlcmd:错误:用于SQL Server的Microsoft ODBC驱动程序17:TCP提供程序:错误代码0x2749。Sqlcmd:错误:用于SQL Server的Microsoft ODBC驱动程序17:在建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确,以及SQL Server是否配置为允许远程连接。有关详细信息,请参阅SQL Server联机丛书。。

我还尝试通过我的主机链接使用powershell进行连接:https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker

命令:

sqlcmd -S 192.168.0.110,1433 -U SA -P yourStrong(!)Password

注意:192.168.0.110(这是在主机中运行ipconfig得到的。)

有什么帮助吗?

共有3个答案

赵正雅
2023-03-14

docker run命令语法如下:

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

执行命令时:

docker run -e 'ACCEPT_EULA=Y' --name mssql -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -it -d microsoft/mssql-server-linux:latest /bin/bash

最后覆盖microsoft/mssql server linux映像的Dockerfile中定义的CMD层。

因此,只需启动一个容器,最终无需任何附加命令:

$ docker run -e 'ACCEPT_EULA=Y' --name mssql -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -it -d microsoft/mssql-server-linux:latest

现在您可以访问MSSQL:

$ docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'yourStrong(!)Password'
1> 
吴俊风
2023-03-14

尝试127.0.0.1或0.0.0.0而不是localhost

例如:

docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P 'yourStrong(!)Password'
胡曾笑
2023-03-14

经过一些试验和错误,我发现了问题,并重新阅读了文档。当我在PowerShell中执行命令时,我应该对参数使用双引号。

我看错了方向。最初我执行命令:

docker run -e 'ACCEPT_EULA=Y' --name mssql -e \
 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d \
 microsoft/mssql-server-linux:latest

容器每次启动时自动停止。然后,我在谷歌上搜索了一下,发现:

docker run -e 'ACCEPT_EULA=Y' --name mssql -e \
 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -it -d \
 microsoft/mssql-server-linux:latest /bin/bash

表面上看起来不错。它在PowerShell中成功执行。它不再自动停止。如果我使用

docker container logs mssql

查看mssql的日志。没有给出错误,只是我没有看到给出的大量信息,这让我认为我的命令没有问题。

但运行这些命令的正确方法是使用双引号。链接:https://hub.docker.com/r/microsoft/mssql-server-linux/重要提示:如果您在Windows上使用PowerShell运行这些命令,请使用双引号而不是单引号。

例如。

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourStrong!Passw0rd" -p 1401:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest

我还可以使用SSMS登录:

  • 服务器名:Hostip,1401
 类似资料:
  • 我有一个很大的问题在我的文凭项目,将非常高兴,如果你们能帮助我!我做了一个Maven多模块项目,有3个“核心项目” :(父级) :包含具有所有实体的域模型和和的所需的接口 :连接到的GUI和Hessian连接 :以下是我的存储库、我与DB的连接以及接口&的实现,在Maven中有作为依赖项。 模型库: 卡萨: MeinRemotedIenst: infrastructures.xml: servle

  • 我正在尝试在Linux-Debian 8.11@Virtualbox上设置MSSQL数据库,但无法通过MSSQL MSSQL Server Management Studio连接到它 服务器是可ping的。 VirtualBox中的网络设置: 纯主机网络VirtualBox纯主机以太网适配器 有什么想法吗? 错误日志@服务器 https://pastebin.com/7WGEVg1a

  • 问题内容: 我正在研究一个Web项目,该项目将部署在运行IIS 7.5和PHP 5.3.8的64位Windows 2008 Server计算机上。系统上的数据库是Microsoft SQL Server 2008 R2。我正在CodeIgniter 2.1.0框架上开发应用程序,但对于将其连接到SQL Server感到有些困惑。 我已经尝试过同时使用MSSQL,ODBC和SQLSRV数据库驱动程序

  • 问题内容: 我在JBoss服务器上使用Hibernate。我得到下面的错误。 当我尝试在同一会话中第二次连接到数据库时,发生错误。 另外,我还会收到错误消息“为您关闭连接。请关闭您的连接”。 可能是什么原因,如何解决这种情况? 问题答案: 自从您一年前提出这个问题以来,这个答案实际上可能为时已晚。但它将帮助将来会遇到此错误的人。 您的错误可能来自不同的来源,但在我的情况下,它的所有原因均与事务超时

  • 我正在尝试使用docker-compose运行2个docker容器,并将mysql容器连接到app容器。mysql容器正在运行,但app容器无法启动,出现错误:错误:2003:无法连接到'127.0.0.1:3306'上的mysql服务器(111连接被拒绝)似乎我的app容器正在尝试连接我的主机mysql而不是mysql容器。 Docker-compose.yml DockerFile 这是我的d

  • 我正在尝试使用ccdt.tab文件连接到队列管理器。以下是我所尝试的: 以下是ccdt.tab中的内容 有谁知道哪里出了问题,怎么修复? PS:我确实看到了那些帖子:在JMS中使用CCDT文件连接到IBM MQ 下面是链接的异常和异常在I时打印出来的: 以下是当我时链接的异常和异常打印: