如何从开发容器内连接到 SQL Server 数据库?

问题描述 投票:0回答:1

我目前正在开发一个 .NET Core 项目。当我在本地计算机 (Windows) 上运行该应用程序时,我可以使用我的 Windows 凭据连接到 SQL Server 数据库。

我尝试在 Visual Studio Code 中转而使用 devcontainer,但是当我在容器 (Linux) 中运行相同的应用程序时,出现错误:

发生“Microsoft.Data.SqlClient.SqlException”类型的异常 在 Microsoft.Data.SqlClient.dll 中,但未在用户代码中处理:

建立时发生网络相关或特定于实例的错误 与 SQL Server 的连接。未找到服务器或未找到服务器 无障碍。验证实例名称是否正确以及 SQL 服务器配置为允许远程连接。 (提供者: TCP 提供商,错误:35 - 捕获内部异常)

我不知道从这里该去哪里。我错过了什么?

sql-server .net-core containers vscode-remote
1个回答
0
投票

我在 devcontainer 中遇到了同样的问题,其中一个容器运行 mssql 服务器,另一个容器运行应用程序。我无法在 VSCode 中添加与 SQL Server 的连接,应用程序也无法建立连接。

我为数据库容器发布了端口 1433 后,SSMS 可以连接,但应用程序容器仍然失败。

使教程正常运行的一个快速修复方法是使用数据库容器的 IP 地址:

Data Source=172.20.0.2,1433;Initial Catalog=Beam;Integrated Security=False;User ID=sa;Password=@#^fcIen&*asd;TrustServerCertificate=True

问题是,当容器尝试访问本地主机时,就像任何其他机器一样,它试图与自身通信。

在 Docker Compose 网络中,使用 服务名称自定义主机名 与其他容器进行通信,如此答案中所述。

一个相关的解决方案是在连接字符串中使用语法

<ip>,<port>
在此处解释

© www.soinside.com 2019 - 2024. All rights reserved.