Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无法将SSMS连接到Docker上的SQL Server_Sql Server_Docker_Containers_Ssms_Sqlcmd - Fatal编程技术网

Sql server 无法将SSMS连接到Docker上的SQL Server

Sql server 无法将SSMS连接到Docker上的SQL Server,sql-server,docker,containers,ssms,sqlcmd,Sql Server,Docker,Containers,Ssms,Sqlcmd,我遵循了微软的官方标准,安装了SQL Server Docker镜像 因此,我在Docker上运行了一个SQL Server映像,IP地址为172.17.0.2 我还可以使用带有伪密码的sqlcmd轻松连接到它 问题是我无法通过SSMS连接到它: Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456) 当然,在发布此问题之前,我阅读了其他StackOverflow,并尝试了多次登录: 本地主机,1433 本地主机

我遵循了微软的官方标准,安装了SQL Server Docker镜像

因此,我在Docker上运行了一个SQL Server映像,IP地址为172.17.0.2

我还可以使用带有伪密码的sqlcmd轻松连接到它

问题是我无法通过SSMS连接到它:

Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)

当然,在发布此问题之前,我阅读了其他StackOverflow,并尝试了多次登录:

  • 本地主机,1433
  • 本地主机:1433
  • 172.17.0.21433
  • 等等

如果localhost不能像docker映像的IP地址那样工作,我如何连接

服务器设置看起来不错。您只需要给出“localhost”而不是“localhost,1433”。

连接字符串没有问题。问题在于提供的凭据。可能在创建过程中添加的密码周围加上引号

您是否可以运行
docker exec-it sql1“bash”
这将提供一个容器外壳。运行
echo$SA_PASSWORD
查看密码是否包含引号以及是哪个引号。复制结果并将其粘贴到密码字段中,然后查看它是否有效

您还可以使用以下命令更改密码:

docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
   -S localhost -U SA -P "<YourStrong@Passw0rd>" `
   -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
docker exec-it sql1/opt/mssql-tools/bin/sqlcmd`
-S localhost-U SA-P“”`
-Q“使用密码=''更改登录SA”

我认为,如果您遵循MS文档,您的cmd for init容器缺少
MSSQL\u PID
参数,我不知道为什么SSMS需要它,我们可以稍后了解。但是你应该试试这个

 docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Helloworld123" -e "MSSQL_PID=Express" -p 1433:1433  --name sql1 -d mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04

SQL server登录错误代码的可能原因
18456

SQL Server登录失败可能是由于各种原因造成的

  • 输入的用户名或密码不正确
  • 启用了错误的身份验证模式
  • 一个用户名在不同的服务器上可能有不同的密码。因此,用户必须确保输入了正确的组合
  • 用户帐户的密码已过期
  • 用户帐户已从服务器中删除
也许,要解决这个问题,可以试试这个

首次启动SQL Server时,可能会在安全选项下启用“Windows身份验证”。在这种情况下,服务器将无法识别用户,用户将收到失败的登录错误

这篇文章也值得一看:-

就我而言,我在本地机器上运行MSSQL服务器+在docker上运行一台。关闭主机上的mssql服务器服务解决了问题。

您如何启动容器?当使用docker run-e“ACCEPT_EULA=Y”-e“SA_PASSWORD=Your$trongPw”-p 1433:1433时,不要在密码周围加引号。还要注意,在Windows Powershell中运行时使用双引号,在Linux中使用单引号。运行Express edition时,您必须连接到
172.17.0.21433\SQLEXPRESS
。是否有防火墙阻止SSMS连接?该错误表明您已连接到容器实例。单击“错误”对话框中的“显示详细信息”,查看是否提供了更多信息。此外,请检查容器中的sql server错误日志以获取有关失败登录尝试的其他信息:
cat/var/opt/mssql/log/errorlog
docker实例是否在运行sql客户端的同一台计算机上运行?@rfkortekaas,是的,我在同一台计算机上有SSMS和docker hi@TWP,命令
docker run-e“ACCEPT_EULA=Y”-e“SA_PASSWORD=HelloWorld123”-p 1433:1433-t 3c7ee124fdd6
从守护进程返回的错误响应:驱动程序未能在端点上编程外部连接。\u shirley(064f1bfa7b66d68995f76c98cb80594807ac30e9659b35e1f217885dedb9094b):0.0.0.0:1433绑定失败:端口已分配。谢谢@rfkortekaas,用纯文本显示密码的好技巧,没有引号:我还将密码从
HelloWorld123
更改为
HelloHell123
,没有乐趣。但我可以通过命令行登录,只是无法使用同一用户/Pas登录的SSMS剑术这很奇怪,谢谢,如果这是问题的话,我永远不会意识到。