我遵循了官方的Microsoft documentation,并安装了SQL Server Docker映像
因此,我在Docker上运行了一个SQL Server映像,IP地址为172.17.0.2
小时
我还可以使用sqlcmd和我的虚拟密码轻松连接到它
小时
问题是我无法通过SSMS连接到它:
Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)
小时
当然,在发布此问题之前,我阅读了其他StackOverflow posts,并尝试了多次登录:
- 本地主机,1433
- 本地主机:1433
- 172.17.0.2,1433
- 等等。。。
如果localhost不能像docker映像的IP地址那样工作,如何连接?
8条答案
按热度按时间vmdwslir1#
我有点晚了,但我希望这个答案对将来的人有帮助。伙计们,我遇到了和报道的完全相同的问题。
对我有效的连接方式如下:
我使用了以下图像:
使用MSSQL_PID Express和端口:
z18hc3ub2#
在我的例子中,我一直在本地计算机上运行MSSQL Sever,在docker上运行一个。关闭主机上的mssql服务器服务解决了此问题。
[编辑]:
添加Francesco所指出的技术原因,这对任何端口都适用:
这并不奇怪,如果端口1433被主机MSSQL占用,那么docker上的MSSQL就不能使用同一端口。
i2loujxw3#
我认为,如果您遵循MS文档,您的cmd for init容器缺少
MSSQL_PID
参数,我不知道为什么SSMS需要它,我们可以稍后找到。但你应该试试这个aor9mmx14#
停止本地mssql服务器;
Windows+R=>
SQLServerManager13.msc
(已安装版本13)小时
试了这个之后,我的问题就解决了
vs91vp4v5#
服务器设置看起来不错。你只需要给出“localhost”而不是“localhost,1433”。
3hvapo4f6#
我有相同的问题和答案在这里找到
https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&pivots=cs1-bash升
正如上面提到的,“您的密码应遵循SQL Server默认密码策略,否则容器无法设置SQL Server,将停止工作”
我使用了以下两个命令
然后,当您使用sqlserver登录时
c9qzyr3d7#
连接字符串正常。问题在于提供的凭据。可能在创建过程中添加的密码周围加引号。
你能运行
docker exec -it sql1 "bash"
吗?这将提供一个容器外壳。运行echo $SA_PASSWORD
,查看密码是否包含引号以及哪一个。复制结果并将其粘贴到密码字段中,看看是否有效。您还可以使用以下命令更改密码:
kmpatx3s8#
SQL server登录错误代码
18456
的可能原因由于各种原因,可能会发生SQL Server登录失败。
也许,要解决这个问题,试试这个
首次启动SQL Server时,可能会在安全选项下启用“Windows身份验证”。在这种情况下,服务器将无法识别用户,用户将收到登录失败18456错误。
同样值得一看的帖子:-Unable to login to SQL Server + SQL Server Authentication + Error: 18456