从Docker Container中连接到SQL Server Express会导致评估密码时出错

时间:2017-03-13 22:05:10

标签: sql-server docker

我正在尝试从Microsoft SQL Server Express映像运行docker容器(https://hub.docker.com/r/microsoft/mssql-server-windows-express/

例如,我尝试了以下命令(一旦我开始工作,我就会使用-d标志)

docker run -it -p 1433:1433 -e SA_PASSWORD=Mfp_4871nJUj_1-23H -e ACCEPT_EULA=Y --name to_delete_1 microsoft/mssql-server-windows-express powershell.exe
docker run -it -p 1433:1433 -e 'SA_PASSWORD=Mfp_4871nJUj_1-23H' -e 'ACCEPT_EULA=Y' --name to_delete_1 microsoft/mssql-server-windows-express powershell.exe

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

我还试过小写sa_password

但是,每次我尝试使用任何

连接容器内的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的密码标准,但我认为我尝试过的所有密码都可以。

我在Windows 10 Enterprise(build 14393.693)上运行Docker。 我有Docker for Windows版本17.03.0-ce-win1(10300)。

如果能够使用microsoft / mssql-server-windows-express Docker imamge从容器内连接到SQL Server,我需要做什么?

由于

1 个答案:

答案 0 :(得分:0)

我不知道你是否找到了这个问题的答案。我没有尝试从容器内连接到数据库,但我已经从容器外部的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登录数据库,如下所示:

SSMS Login info