除非我停止任何本地 SQL Server 实例,否则 Docker、MS SQL Server、SMMS 无法连接

Posted

技术标签:

【中文标题】除非我停止任何本地 SQL Server 实例,否则 Docker、MS SQL Server、SMMS 无法连接【英文标题】:Docker, MS SQL Server, SMMS not connecting unless I stop any local SQL Server Instance 【发布时间】:2020-10-22 11:04:53 【问题描述】:

我正在尝试通过SQL Server Management Studio 连接到 docker 容器中的 SQL Server。

我的 docker SQL 容器实例正在使用以下命令运行:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Pizza1234$" -p 1433:1433 --name sqlserver-test -d mcr.microsoft.com/mssql/server:2017-latest

然后我尝试使用服务器名称连接到 docker 容器中的 SQL Server:localhost, 1433

我无法将 SSMS 连接到 sqlserver-test 容器中的 SQL Server 实例,但后来发现如果我停止本地实例,那么 SSMS 将连接到 docker 中的 SQL Server 实例,这表明 SQL 正在尝试找到一个本地 localhost 实例,只有当它找不到一个时,它才指向一个 docker 托管的实例。

在尝试通过 ssms 连接到 docker 中的实例时,我可以显式设置 docker 实例的名称,还是可以在服务器名称中包含 IP 地址?当两者都通过 bash run 从 docker 运行时,我可以连接,所以我认为使用 SSMS 时我的服务器名称中缺少某些内容。

【问题讨论】:

【参考方案1】:

更改主机上的映射端口,您应该一切顺利。这 2 个实例试图获取 1433 端口,只有第一个会成功。

您可以将-p 1433:1433 替换为-p 2434:1433 并更改客户端上的连接字符串。

【讨论】:

以上是关于除非我停止任何本地 SQL Server 实例,否则 Docker、MS SQL Server、SMMS 无法连接的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式创建新的本地 SQL Server 实例?

SQL Server 忘记登录账号解决方法

本地计算机上的SQL Server(MSSQLSERVER)服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止

如何从 WSL 连接到本地 Windows SQL Server 实例?

如何从 WSL 连接到本地 Windows SQL Server 实例?

如何连接到 SQL Server 2008 Express 的本地实例