如何从 Azure Data Studio 与 Docker 中托管的 SQL Server 2019 容器进行通信

Posted

技术标签:

【中文标题】如何从 Azure Data Studio 与 Docker 中托管的 SQL Server 2019 容器进行通信【英文标题】:How to communicate with SQL Server 2019 container hosted inside Docker from Azure Data Studio 【发布时间】:2021-09-09 07:47:09 【问题描述】:

我正在尝试在 Visual Studio(.NET 核心 Web 应用程序)中创建登录 Web 应用程序。我正在使用 Azure Data Studio(ADS) 连接到应用程序的本地数据库。但是当我使用 docker 运行应用程序时,Web 应用程序加载成功,但加载本地数据库失败。

现在,在网上找了一些解决方案后,我在 Docker 上拉了一张 SQL Server 2019 容器的镜像,并将其连接到 ADS。我无法在 Visual Studio 中设置与 ADS 上 docker 内托管的 SQL Server 数据库的连接字符串。

有人可以提供有关如何在 ADS 上的 Docker 内设置登录应用程序和 SQL Server 容器之间的连接的任何线索吗?

Nugget 包管理器控制台中的错误消息

【问题讨论】:

请参考下面的答案。 请更新您的查询。它有3个概念。 A. 我们需要使用 Azure Data Studio 连接到 SQL Server Docker 容器,B. 我们需要使用 EF Core Tools 迁移数据,以及 C. 我们需要通过作为另一个 Docker 容器运行的 Web App 连接到 SQL Server Docker 容器。 【参考方案1】:

这是Connecting to SQL Server container hosted inside Docker的方式之一。

假设你已经执行了下面提到的命令来执行SQL Server 2019容器。

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sample123$" -p 1433:1433 --name mssql2019indocker -d mcr.microsoft.com/mssql/server:latest

Azure 数据工作室:

您可以使用server=localhostAuthentication Type=SQL LoginUser name = sapassword = Sample123$。这些详细信息基于您执行的创建容器的命令。请参考下图。

Azure Data Studio 登录 SQL Server 2019 Docker 容器

注意:如果您使用 EF Core 工具迁移数据库,则服务器应为“localhost”,如 Azure Data Studio 登录图像所示。

.NET Core 应用程序连接到 Docker 容器

这里的情况是.NET core 应用程序正在一个 Docker 容器中执行,而SQL Server 2019 正在另一个容器中执行。

请执行下面的命令找出SQLServer 2019 Docker容器的IPAddress。请参考下图。在我的场景中,IPAddress 是 172.17.0.3

docker inspect <ContainerIdOfSQLServer2019>

获得 IPAddress 后,请在下面提到的连接字符串中更新它。

Server=<IPAddressOfTheSqlServer2019DockerContainer>;Database=myDataBase;User Id=myUsername;Password=myPassword;

查找 SQL Server 2019 Docker 容器的 IP 地址

使用 Docker 配置执行 Web 应用程序

【讨论】:

谢谢,Vishwanatha...以上信息真的很有帮助。更新数据库时,我收到以下错误“在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。”服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)”。 我还检查了 SQL SERVER CONFIGURATION MANAGER。 SQL Server 服务(SQL SERVER、SQL SERVER AGENT、SQL SERVER BROWSER)以及 SQL Server 网络配置,使每个组件(命名管道、TCP/IP、共享内存)都处于活动状态 "ConnectionStrings": "BookStoreDbContextConnection": "Server=172.17.0.2;Database=LoginDB;User Id=user01;Password=User@43567!" Docker 检查后 CMD 中的 IP 地址 : "IPAddress": "172.17.0.2", 问题出现了,在 appsettings.json 中设置连接字符串后,在 nugget 包管理器控制台中,我使用 1) Add-Migration "Initial-Create" 和 2) Update-Database 。在更新数据库时它向我显示错误

以上是关于如何从 Azure Data Studio 与 Docker 中托管的 SQL Server 2019 容器进行通信的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Visual Studio for Mac Project 连接到 Azure Data Studio 数据库?

Azure Data Studio 机器学习 - 无法识别 Python 和 R 包

使用 Azure Data Studio 备份和还原 Azure 数据库

Azure Data Studio - 如何访问活动监视器

跨平台数据库工具Azure Data Studio

在 Azure Data Studio Python Notebook 中的何处设置环境变量?