Sql server 从Docker容器内连接到SQL Server Express时,在评估密码时出错

Sql server 从Docker容器内连接到SQL Server Express时,在评估密码时出错,sql-server,docker,Sql Server,Docker,我正在尝试从Microsoft SQL Server Express映像()运行docker容器 例如,我尝试了以下命令(一旦我让它工作起来,我将使用-d标志) (不是真正的密码-我尝试了许多密码,因为我在下面看到的修复错误的建议之一是确保密码符合Microsoft的密码策略。但是对于所有密码,我都会得到相同的错误) 我也试过小写的sau密码 但是,每次我尝试从容器中使用以下任何一种方式连接sa帐户时: sqlcmd -U sa -P Mfp_4871nJUj_1-23H sqlcmd -S l

我正在尝试从Microsoft SQL Server Express映像()运行docker容器

例如,我尝试了以下命令(一旦我让它工作起来,我将使用-d标志)

(不是真正的密码-我尝试了许多密码,因为我在下面看到的修复错误的建议之一是确保密码符合Microsoft的密码策略。但是对于所有密码,我都会得到相同的错误)

我也试过小写的sau密码

但是,每次我尝试从容器中使用以下任何一种方式连接sa帐户时:

sqlcmd -U sa -P Mfp_4871nJUj_1-23H
sqlcmd -S localhost -U sa -P Mfp_4871nJUj_1-23H
sqlcmd -S localhost\sqlexpress -U sa -P Mfp_4871nJUj_1-23H
sqlcmd -U sa
sqlcmd -S localhost -U sa
sqlcmd -S localhost\sqlexpress -U sa
(输入最后3个密码)

我明白了

Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'sa'..
查看它显示的SQL Server日志

2017-03-13 21:25:52.32 Logon       Error: 18456, Severity: 14, State: 7.
2017-03-13 21:25:52.32 Logon       Login failed for user 'sa'. Reason: An error occurred while evaluating the password. [CLIENT: 172.22.251.6]
主要的建议是确保密码符合SQL Server的密码标准,但我认为我尝试过的所有密码都符合

我在Windows10企业版(build 14393.693)上运行Docker。 我有适用于Windows版本17.03.0-ce-win1(10300)的Docker

要使用microsoft/mssql Server windows express Docker imamge从容器内连接到SQL Server,我需要做什么


谢谢

我不知道你是否找到了这个问题的答案。我没有尝试从容器内连接到数据库,但我已从容器外的SSMS连接到数据库。我的关键是在原始命令中用双引号指定密码。最后的命令如下所示:

docker run -d -p 1433:1433 -e sa_password="useComplexPasswordHere" -e ACCEPT_EULA=Y microsoft/mssql-server-windows-express
然后我可以通过SSMS连接到它。使用以下命令从docker容器获取IP地址:

docker inspect
然后通过SSMS登录数据库,如下所示:


该错误基本上意味着登录被禁用,密码不正确。如果密码不正确,则在创建容器时听起来好像没有设置密码,因为我在“docker run”命令和“sqlcmd”命令之间复制了相同的密码。如果这是真的,我在运行容器时是否使用了错误的docker命令?我不确定,还没有尝试在容器中运行SQL Server。您链接的页面提供了一个示例命令行-试试看。值得注意的是,
sa_password
在示例中是小写的。不同的帮助页面提供了不同的sa_password案例。最终,以下命令起了作用。docker run-d-p 1433:1433-e'sa_password='-e'ACCEPT_EULA=Y'最初我有一个docker错误被掩盖,因为mssql server windows express映像从顶级文件夹运行启动脚本,并且我更改了docker文件中的工作目录。从docker容器中连接到mssql时出现了相同的问题。一旦我使用了双引号,效果就很好了。谢谢。
docker inspect