当前位置: 首页 > 知识库问答 >
问题:

使用VS代码(mssql扩展)连接到Windows上Docker中运行的SQL Server

哈栋
2023-03-14

我在Windows上使用Docker,并且我有一个正在运行SQLServer的Docker容器。要启动我的容器,我使用了此处显示的信息:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-CU8-ubuntu

(注意,我在Windows上运行时使用的是双引号()而不是单引号(

我的容器正在运行,我可以连接到它并使用sqlcmd进行查询:

docker exec -it <container_id|container_name> /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <your_password>

(注意,我指定了使用docker container ls找到的容器ID,以及运行容器时使用的密码,yourStrong(!)密码

1> USE master
2> GO
Changed database context to 'master'.
1> SELECT name, database_id, create_date FROM sys.databases;
2> GO
name                                                                                                                             database_id create_date
----------------------------------------
master         1 2003-04-08 09:13:36.390
tempdb         2 2020-04-06 12:00:33.493
model          3 2003-04-08 09:13:36.390
msdb           4 2018-06-13 18:27:29.220

但是,我想使用VS代码连接到我的SQL server实例,因此在安装SQL server(mssql)后,我尝试建立连接,但连接失败。

服务器名称

对于服务器名,我使用容器的IP地址,即172.17.0.2。这是使用此处显示的答案获得的。

数据库名称

对于数据库名称,我使用的是master。

用户名

对于用户名,我使用了SA(注意,我已经尝试了大写和小写)。

暗语

我使用的密码与运行容器时指定的密码相同,yourStrong(!)密码

最后两个步骤是“Save Password”(保存密码),我为其选择“Yes”(是),并命名连接,我已尝试为其指定一个名称,并尝试忽略它。

每次连接都会失败,我不确定是什么问题。凭据绝对正确(除非在VS代码中添加到提示时以某种方式进行了转换,这是不可能的),服务器名称(IP)正确,并且数据库存在。

有谁知道问题可能是什么,或者我如何进一步排除故障?

我知道这应该行得通,因为我已经在Linux上成功地做了完全相同的事情。我猜想这与Docker在Windows上运行有关,但不能确定。

感谢您的帮助!


共有3个答案

倪举
2023-03-14

您可以尝试在setting.json中检查mssql.connections的配置,看看它是否包含“azureAccount tToken”:“”在filileName下。如果是,请将其删除并尝试连接。这对我有效,希望对您有所帮助。

郭鸿信
2023-03-14

blockquote对于服务器名,我使用容器的IP地址,即172.17.0.2。这是使用此处显示的答案获得的。块引用

别这样,平主持人。docker。内部并使用其显示的IP或使用主机。docker。内部而不是IP。包括端口,以便

host.docker.internal1433年

唐阳泽
2023-03-14

尝试使用语法

如果服务器正在监听本地计算机上的端口1433,您应该使用localhost,1433

 类似资料:
  • 我是编程新手,刚开始学习JS。我尝试在Visual Studio代码上通过“code runner”运行我的第一个代码,但它没有给我输出。在此处输入图像描述

  • 我已经在我的Windows 10 Pro机器上安装了Windows Subsystem for Linux (WSL)。按照这个教程,我在windows上设置docker来使用WSL。在WSL的命令行中,docker工作得非常好。我构建了多个图像,并在WSL中运行它。 我还在WSL中安装了Microsoft Visual Studio Code。我在Windows的X服务器(VcXsrv)的帮助下

  • 我正在尝试在Linux-Debian 8.11@Virtualbox上设置MSSQL数据库,但无法通过MSSQL MSSQL Server Management Studio连接到它 服务器是可ping的。 VirtualBox中的网络设置: 纯主机网络VirtualBox纯主机以太网适配器 有什么想法吗? 错误日志@服务器 https://pastebin.com/7WGEVg1a

  • 我正在构建一个使用vs代码扩展解析json的扩展。所以我的需求是,它应该能够从一个特定的文件夹加载.json文件,并遍历该文件的内容。然后,它应该允许用户从中选择几个键,生成一个新的json文件,并将其保存在任何文件夹中。 但是我无法找到任何方法来读写“VS代码扩展”中的文件。请有人帮助我。

  • 我已经正确地设置了Docker,并运行了一些容器没有问题。现在我试着设置邮件。我试了两个: 1 https://hub.docker.com/r/paintedfox/postgresql/ 2 https://hub.docker.com/_/postgres/ 我已尝试在VirtualBox中为容器设置端口转发。 我还尝试了机器主机,如Kitematic:192.168.99.100所示