You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Docker托管MSSQL连接失败求助:按官方教程操作仍无法连接

排查Docker托管MSSQL的sqlcmd连接失败问题

首先得指出你启动命令里的核心问题:你添加-it/bin/bash的初衷是防止容器自动停止,但这个操作覆盖了MSSQL容器的默认启动命令——原本容器启动后会自动运行SQL Server服务,现在你强制让容器进入bash交互终端,导致SQL Server根本没启动,这肯定连不上。

下面是一步步的排查和修复方案:

  • 第一步:修复容器启动逻辑,让SQL Server正常运行
    先停止并删除现有容器:

    docker stop mssql
    docker rm mssql
    

    重新启动容器,去掉-it/bin/bash,如果担心容器意外停止,可以加--restart always参数保证容器退出后自动重启:

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

    验证容器状态:

    docker ps
    

    看到容器状态为Up就说明启动成功了。

  • 第二步:确认容器内SQL Server服务正常运行
    如果容器启动了但还是连不上,进入容器查看服务状态或日志:

    # 查看SQL Server版本(验证服务可调用)
    docker exec -it mssql /opt/mssql/bin/sqlservr --version
    # 查看容器日志,排查启动报错
    docker logs mssql
    

    日志里如果出现密码复杂度相关的错误,说明你设置的SA_PASSWORD不符合要求(需要至少8位,包含大小写、数字、特殊字符)。

  • 第三步:验证本地网络连通性
    在Windows PowerShell里测试1433端口是否开放:

    Test-NetConnection localhost -Port 1433
    

    如果显示TcpTestSucceeded : True说明端口映射正常。如果失败,检查Windows防火墙/杀毒软件是否拦截了1433端口,或者容器启动命令里的端口映射是否写错(比如-p 1433:1433是否正确)。

  • 第四步:正确使用sqlcmd连接
    确保sqlcmd的命令格式正确,比如:

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

    如果你本地已经装了SQL Server占用了1433端口,可以把容器端口映射改成其他端口(比如-p 1434:1433),连接时用localhost,1434

内容的提问来源于stack exchange,提问作者csamleong

火山引擎 最新活动