我正在尝试使用docker连接到sql server。我已使用此命令成功启用容器
sudo docker run -d --name aakash -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Maximus6hero@" -p 1434:1434 microsoft/mssql-server-linux
docker ps
3e41723b93d5 microsoft/mssql-server-linux "/opt/mssql/bin/sqls…" About an hour ago Up About an hour 1433/tcp, 0.0.0.0:1434->1434/tcp aakash
它显示我的容器正在运行。但当我尝试使用数据库可视化工具连接时,它会抛出一个错误。到主机localhost端口1434的TCP/IP连接失败。错误:"驱动程序收到意外的预登录响应。请验证连接属性,并检查SQL Server实例是否在主机上运行并接受端口上的TCP/IP连接。此驱动程序只能与SQL Server 2000或更高版本一起使用。"。ClientConnectionId:6a802ae0-7203-411d-a599-4c1de997d843。
我还随身携带了windowspc,可以使用sqlservermanagementstudio轻松连接。即使我也可以使用windows pc连接其他pc。但当我试图使用其ip将我的mac连接到windows pc时,也会出现同样的错误。
我已经使用sql server配置管理器在windows上启用了tcp/ip连接。但在mac上却没有这样的东西。
您的MAC上可能会出现此错误,因为当您在后台运行docker时,默认情况下它只使用2GB的内存,这不足以运行SQL server,因为它至少需要3.25 GB,理想情况下,我们应该将其指向4GB的内存。在你的docker上用上面的详细信息更新偏好部分。保存并重新启动docker,您可以检查以下步骤,看看这是否有助于您的MAC。我使用Azure Data Studio和Docker完成了这项工作。
一旦您保存并重新启动具有4GB内存分配的docker以运行docker,您所需要做的就是提取sql server的docker映像并下载它。这可以通过终端上的以下命令来完成。仅供参考,我正在使用下面的bash命令:
命令1:
sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
这将提取最新的vesion docker映像并下载。完成后,您需要在服务器上为数据库设置SQL身份验证。遵循以下命令:
命令2:
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<SetYourPasswordHere>'
-p 1433:1433 --name sql1
-d mcr.microsoft.com/mssql/server:2017-latest
这将设置您的密码并使用SQL server的端口1433(这是默认端口(。要确认映像是否已创建并且SQL server是否在docker上运行,请执行以下命令检查日志。
命令3:
docker ps
要检查Docker历史记录中的所有实例(即,如果您在尝试此SQL连接/执行之前已经安装了Docker(,请运行以下命令,它将为您提供创建的所有实例的所有日志
命令4:
docker ps -a
或
docker ps -all
一旦您完成了上述步骤,并看到docker已经创建了SQL实例,您需要转到Azure Data Studio并设置以下凭据来访问您刚才使用docker创建的服务器。
Server: localhost
Authentication Type: SQL Authentication
Username: sa
Password: <Check Command 2 to see what you entered in the password where it says SetYourPasswordHere>
希望这能帮助你在MAC上运行SQL服务器。祝你一切顺利!