我在连接到 Podman 容器内运行的 SQL Server 实例时遇到问题。服务器托管在
localhost
地址。
安装详细信息:我已使用以下
docker-compose.yml
文件安装了 SQL Server:
name: mssql
services:
server:
image: mcr.microsoft.com/mssql/server:2017-latest
environment:
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=some password
- MSSQL_PID=Developer
ports:
- 1433:1433
volumes:
- C:\dockers\mssql2017\volumes\data\:/var/opt/mssql/data
- C:\dockers\mssql2017\volumes\secrets\:/var/opt/mssql/secrets
问题
使用 SQL Server Management Studio (SSMS) 时,我可以使用 IP 地址
127.0.0.1
成功连接到服务器(未指定 SQL 实例)。但是,当我尝试使用 localhost
连接时,连接超时。
故障排除步骤:
Ping 测试:当我 ping
localhost
时,它正确解析为 ::1(相当于 127.0.0.1 的 IPv6)。
> ping localhost
Pinging <my machine name> [::1] with 32 bytes of data:
Reply from ::1: time<1ms
Docker Desktop:如果我在 Docker Desktop 而不是 Podman 上运行相同的 SQL Server 设置,它可以正常工作,没有任何问题。
怀疑原因:
Podman 处理网络的方式似乎可能有所不同,但我是 Podman 的新手,无法查明确切的问题。任何有关如何解决此问题的指导或建议将不胜感激!
我猜问题出在 SQL 服务器配置上。默认情况下不启用命名管道。所以也许因为这个原因它不接受
localhost
。
使用IP地址访问可能会更容易。如果您从同一个容器访问 SQL 服务器,我相信使用本地 IP 是可以的。如果这不起作用,您的 SQL Server 容器可能有一些分配的 IP 地址可供访问。
但这不足以解决这个问题,我们不知道您的连接字符串,但也许您也需要稍微调整一下您的连接字符串。我建议你检查一下这个答案。 用户“sa”登录失败。原因:无法打开显式指定的数据库“*databasename*”。 -使用 SQL Server 和 .NET8 的 Kubernetes
希望这有帮助。