首页 > 解决方案 > 我只是下载 Microsoft SQL 以使用它以及使用 Docker,但是当我尝试编写命令“sqlcmd”时出现错误

问题描述

我是 SQL 数据库和 Docker 容器的新手。我正在尝试跟进一个简单的教程,我已经开始下载 Docker 和 MSSQL 数据库(及其命令工具)。之后,我尝试运行命令sqlcmd以检查到目前为止是否一切正常,并且此错误出现在终端中:

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2AF9.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
Victors-MacBook-Pro:~ vict0rsan$

为了达到这一点,我完全遵循了以下步骤:

数据库配置

如果项目配置没有改变,那么 hybris 将在 HSQL 数据库上运行。但是,该项目将在生产中使用 SQLServer,因此建议使用带有 SQLServer 的本地数据库实例,以防万一应该跟踪一些特定于数据库的问题。 使用 SQLServer 在本地运行 hybris:

使用 MS SQLServer 下载最新的 docker 镜像(项目页面:https ://hub.docker.com/_/microsoft-mssql-server )
docker pull mcr.microsoft.com/mssql/server:2019-CU8-ubuntu-16.04
给 Docker 至少 2GB 的内存。

docker 镜像需要至少 2GB 的镜像内存,因此请转到 Docker 桌面 > 首选项 > 资源并将内存值设置为至少 2GB。

运行实例
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=[[strong password]]' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-CU8-ubuntu-16.04
安装 mssql 工具:
brew untap microsoft mssql-preview
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install mssql-tools

(如果第一个命令引发错误,请忽略它。然后接受所有 EULA 提示。)

执行脚本以创建数据库、用户、登录名和架构:

将以下代码段保存到文本文件,例如init.sql,并将“[[TheAldoLoginPassword]]”替换为您要为数据库用户提供的实际密码:

/* Create login */
USE [master]
GO
CREATE LOGIN [AldoLogin] WITH PASSWORD=N'[[TheAldoLoginPassword]]', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
GRANT CONNECT SQL to AldoLogin WITH GRANT OPTION;
GO
/* Create database */
CREATE DATABASE [aldo];
GO
/* Set mappings, create schemas and set schema ownership and default schemas */ 
USE [aldo]
CREATE USER [AldoUser] FOR LOGIN [AldoLogin]
GO
ALTER ROLE [db_ddladmin] ADD MEMBER [AldoUser]
GO
CREATE SCHEMA AldoSchema AUTHORIZATION AldoUser;
GO 
ALTER USER [AldoUser] WITH DEFAULT_SCHEMA=[AldoSchema]
GO
ALTER DATABASE aldo SET READ_COMMITTED_SNAPSHOT ON
GO
ALTER DATABASE aldo SET ALLOW_SNAPSHOT_ISOLATION ON
GO

使用以下命令执行脚本:

sqlcmd -S localhost -U SA -i /path/to/init.sql 

(当提示输入密码时,输入为 docker 映像创建的密码,而不是为数据库用户创建的密码。)

你知道是什么原因造成的吗?感谢您的帮助,在此先感谢。

标签: sqlsql-serverdockersqlcmd

解决方案


我只是换localhost127.0.0.1,它起作用了。感谢@AlwaysLearning 的有用回答。


推荐阅读