我想在 MS SQL 容器设置上运行 sql 脚本。
如果我单独完成所有工作,一切都会正常:
运行容器
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Password" -p 1434:1433 --name ms-sql -d mcr.microsoft.com/mssql/server:2019-latest
连接到容器
docker exec -it ms-sql "bash"
运行 SQL
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Password' -Q 'create database TestDB12'
但如果尝试在容器创建时执行相同操作
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Password" -p 1434:1433 --name ms-sql -d mcr.microsoft.com/mssql/server:2019-latest sh -c "/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Password' -Q 'create database TestDB12'"
sqlcmd 登录失败并出现错误
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2749.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
答案1
通过提供sh -c "/opt/mssql-tools/bin/sqlcmd ...
运行命令,您可以替换使用该命令启动容器中的SQL服务器的命令sqlcmd
。
服务器未在容器内启动。您需要先启动它,然后在启动完成后运行您的命令。