繁体   English   中英

Microsoft ODBC Driver 17 for SQL Server:使用 Docker 的用户登录失败

[英]Microsoft ODBC Driver 17 for SQL Server : Login failed for user with Docker

我有一个用于 SQL Server 数据库的 Dockerfile,如下所示:

FROM mcr.microsoft.com/mssql/server:2017-latest

ARG SA_PASSWORD
ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=$SA_PASSWORD
ENV MSSQL_PID=Developer
ENV MSSQL_TCP_PORT=1433 

WORKDIR /src
COPY ./ /scripts/

EXPOSE 1433 

RUN (/opt/mssql/bin/sqlservr --accept-eula & ) | grep -q "Service Broker manager has started" &&  (for foo in /scripts/*.sql;do /opt/mssql-tools/bin/sqlcmd -S127.0.0.1 -Usa -P${SA_PASSWORD}  -i$foo;done)

当我运行 docker build 时,出现以下错误:

Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:用户“sa”登录失败。

这个 Dockerfile 以前工作过,我不记得在它停止工作之前做过任何更改。 我尝试重新安装 Docker 并删除所有容器和图像。

任何想法可能是错误的?

似乎在“Service Broker manager has started”消息之后,服务器还没有准备好。

你需要一些像这样的延迟:

RUN (/opt/mssql/bin/sqlservr --accept-eula & ) | grep -q "Service Broker manager has started" && sleep 5s &&  (for foo in /scripts/*.sql;do /opt/mssql-tools/bin/sqlcmd -S127.0.0.1 -Usa -P${SA_PASSWORD}  -i$foo;done)

运行一个等待 sqlserver 的脚本可能会更好:

FROM mcr.microsoft.com/mssql/server:2017-latest

ARG SA_PASSWORD
ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=$SA_PASSWORD
ENV MSSQL_PID=Developer
ENV MSSQL_TCP_PORT=1433 

WORKDIR /src
COPY ./ /scripts/
RUN chmod +x /scripts/configure-db.sh

EXPOSE 1433 

RUN /opt/mssql/bin/sqlservr --accept-eula & /scripts/configure-db.sh

配置-db.sh

 #!/bin/bash # wait for MSSQL server to start export STATUS=1 i=0 while [[ $STATUS -ne 0 ]] && [[ $i -lt 300 ]]; do i=$i+1 /opt/mssql-tools/bin/sqlcmd -t 1 -U sa -P $SA_PASSWORD -Q "select 1" >> /dev/null STATUS=$? done if [ $STATUS -ne 0 ]; then echo "Error: MSSQL SERVER took more than 60 seconds to start up." echo $SA_PASSWORD exit 1 fi echo "======= MSSQL SERVER STARTED ========" | tee -a /scripts/config.log # Run the setup script to create the DB and the schema in the DB #/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Abcdefg1234 -d master -i /scripts/test.sql for foo in /scripts/*.sql; do /opt/mssql-tools/bin/sqlcmd -S127.0.0.1 -Usa -P${SA_PASSWORD} -i$foo; done echo "======= MSSQL CONFIG COMPLETE =======" | tee -a /scripts/config.log

脚本代码来自: https : //github.com/mcmoe/mssqldocker/blob/master/configure-db.sh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM