除非我停止任何本地 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(MSSQLSERVER)服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
如何从 WSL 连接到本地 Windows SQL Server 实例?