首页 > 解决方案 > Docker 中的 SQL Server 命名实例

问题描述

如何在 Docker 容器中运行命名 SQL Server 实例?

我有一个应用程序,它的连接字符串指向一个命名的 SQL Server 实例,例如Data Source=HostName\InstanceName;这个连接字符串对我来说是非常有问题的。我想对那个 SQL Server 实例进行 dockerize。我已经对其进行了配置,以便我可以通过sqlcmdusing连接到 dockerized 实例,sqlcmd -S HostName但是在使用时sqlcmd -S HostName\InstanceName(应该等同于此应用程序正在使用的连接字符串)它不会建立连接。

标签: sql-serverdockersql-server-2019

解决方案


Docker 容器不支持命名实例;这在这里提到:

没有命名实例的概念。每个容器都可以有一个唯一的名称。
...
容器没有运行多个 SQL Server 实例的概念。因此,没有运行多个实例名称的选项。

真的,您应该更改连接字符串。如果您无法更改连接字符串(但您确实应该更改连接字符串),另一种方法是使用本地客户端网络实用程序或配置管理器在每个客户端上创建一个别名。

例如,您可以在客户端上创建一个别名,该别名指向HostName\InstanceName但在下面,映射实际上会重定向到HostName,2700(假设2700是您在 中指定的端口docker run ... -p 2700:1433 ...)。

别名在这里讨论得更彻底,我在这里讨论为 Docker 容器使用自定义和特定端口。

我是否提到更改连接字符串更合乎逻辑?可能是您要解决的问题。


推荐阅读