如何从 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=localhost
、Authentication Type=SQL Login
、User name = sa
和password = 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 包