【问题标题】:SQL Server named instance in DockerDocker 中的 SQL Server 命名实例
【发布时间】:2021-12-26 15:14:15
【问题描述】:

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

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

【问题讨论】:

  • Linux 上的 SQL Server 不支持命名实例。
  • 为什么不从连接字符串中删除实例名称?如果出于某种原因必须保留名称,请添加端口号 (Data Source=HostName\InstanceName,1433),以便忽略实例名称。

标签: sql-server docker sql-server-2019


【解决方案1】:

Docker 容器不支持命名实例;这是提到here

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

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

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

here 更彻底地讨论了别名,我讨论了为 Docker 容器使用自定义和特定端口here

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多