Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Docker SQL Server 2017关于linux连接问题_Sql Server_Docker - Fatal编程技术网

Sql server Docker SQL Server 2017关于linux连接问题

Sql server Docker SQL Server 2017关于linux连接问题,sql-server,docker,Sql Server,Docker,我的Docker linux SQL Server今天无法在我的机器上工作 我不确定这是防火墙(我已经全部关闭了)、Docker设置(因为我刚刚升级到最新的Docker版本)还是Docker SQL Server问题(但之前在同一台机器上工作正常) 有人能帮忙吗 我试过使用bash /opt/mssql-tools/bin/sqlcmd -S localhost,8010 -U SA -P Test123! 错误: Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程

我的Docker linux SQL Server今天无法在我的机器上工作

我不确定这是防火墙(我已经全部关闭了)、Docker设置(因为我刚刚升级到最新的Docker版本)还是Docker SQL Server问题(但之前在同一台机器上工作正常)

有人能帮忙吗

我试过使用bash

 /opt/mssql-tools/bin/sqlcmd -S localhost,8010 -U SA -P Test123!
错误:

Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:登录超时已过期

Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:TCP提供程序:错误代码0x2749

Sqlcmd:错误:用于SQL Server的Microsoft ODBC驱动程序17:在建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确,以及SQL Server是否配置为允许远程连接。有关详细信息,请参阅SQL Server联机丛书

docker编写文件

版本:“3”
服务:
mssql:
网络模式:lsvc
图片:microsoft/mssql server linux:2017最新版本
容器名称:mssql
主机名:mssql
卷数:
-./.db:/var/opt/mssql/
-/var/opt/mssql/data
-./sqlinit.sql:/scripts/sqlinit.sql
端口:
- 8010:1433
环境:
-接受_EULA=Y
-MSSQL_SA_PASSWORD=Test123!
命令:
-/bin/bash
--c
- |
#启动MSSQL并发送到后台
/opt/mssql/bin/sqlservr&
#等待它可用
echo“等待MS SQL可用”
/opt/mssqltools/bin/sqlcmd-l30-mssql-h-1-V1-usa-ptest123-Q“在选择项上设置NOCOUNT\“是的,我们已启动\”,@@servername
_up=$$吗?
而[$$is_up-ne 0];做
echo-e$$(日期)
/opt/mssqltools/bin/sqlcmd-l30-mssql-h-1-V1-usa-ptest123-Q“在选择项上设置NOCOUNT\“是的,我们已启动\”,@@servername
_up=$$吗?
睡眠1
完成
#在/scripts中运行每个脚本
#TODO设置一个标志,以便在创建时只执行一次,
#而且并非每次容器运行时都是如此
#对于/scripts/*.sql中的foo
/opt/mssqltools/bin/sqlcmd-S mssql-U sa-P Test123-l30-e-i/scripts/sqlinit.sql
#完成
#为了使容器不会关闭,请休眠此线程

sleep infinity
我怀疑mssql实例启动失败

当服务器无法启动时,查看docker文件,它会在无限循环中运行。我建议您限制循环的重试次数,这样您就可以看到服务器在启动时出现故障的迹象。 或者更好地考虑使用<强> HealthChist< <强>选项,而不是循环脚本 看

要排除故障,请尝试

docker logs <mssql-container-id>
docker日志
如果这不能提供足够的信息,请尝试连接到容器,因为这是一台简单的机器

docker exec -it <mssql-container-id> bash
docker exec-it bash
在/var/opt/mssql/log/errorlog中查找错误

请参见

我怀疑mssql实例启动失败

当服务器无法启动时,查看docker文件,它会在无限循环中运行。我建议您限制循环的重试次数,这样您就可以看到服务器在启动时出现故障的迹象。 或者更好地考虑使用<强> HealthChist< <强>选项,而不是循环脚本 看

要排除故障,请尝试

docker logs <mssql-container-id>
docker日志
如果这不能提供足够的信息,请尝试连接到容器,因为这是一台简单的机器

docker exec -it <mssql-container-id> bash
docker exec-it bash
在/var/opt/mssql/log/errorlog中查找错误

请参阅

我找到了根本原因,这不是docker mssql linux造成的

但是最新的Docker桌面社区2.2.0.0

卸载后,将其降级为旧版本Docker Desktop Community 2.1.0.5

它正在工作,连接到mssql成功

不知道什么是新的最新的docker桌面,无论如何…我将使用旧版本现在


另一个需要注意的要点是,.db文件夹(yml文件所在的windows路径)必须在生成docker映像之前删除。

我找到了根本原因,这不是docker mssql linux造成的

但是最新的Docker桌面社区2.2.0.0

卸载后,将其降级为旧版本Docker Desktop Community 2.1.0.5

它正在工作,连接到mssql成功

不知道什么是新的最新的docker桌面,无论如何…我将使用旧版本现在


另外需要注意的一点是,.db文件夹(yml文件所在的windows路径)必须在构建docker映像之前删除。

这是我提到的日志。没有别的了。C:\Users\tester>docker日志-f mssql Sqlcmd:错误:用于SQL Server的Microsoft ODBC驱动程序17:登录超时已过期。Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:TCP提供程序:错误代码0x2749。Sqlcmd:错误:Microsoft ODBC驱动程序17 for SQL Server:在建立到SQL Server的连接时发生与网络相关或特定实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确,SQLdocker日志是否将显示容器的STDOUT和STDERR的输出。这是您案例中的sqlcmd命令输出。请尝试我的第二个选项并查找服务器日志这是我提到的日志。没有别的了。C:\Users\tester>docker日志-f mssql Sqlcmd:错误:用于SQL Server的Microsoft ODBC驱动程序17:登录超时已过期。Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:TCP提供程序:错误代码0x2749。Sqlcmd:错误:用于SQL Server的Microsoft ODBC驱动程序17:在建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确,SQLdocker日志是否将显示