[英]Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login failed for user 'SA'
[英]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.