Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:用户“SA”登录失败
Posted
技术标签:
【中文标题】Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:用户“SA”登录失败【英文标题】:Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login failed for user 'SA' 【发布时间】:2019-12-11 12:08:50 【问题描述】:我正在使用 microsoft/mssql-server-linux:2017-latest
映像在 docker 上运行 SQL Server 数据库。
appsettings.json
中的数据库连接字符串定义为:
"ConnectionStrings":
"DefaultConnection": "Server=sql.data,1433;MultipleActiveResultSets=true;User Id=SA;Password=Pass@word"
,
并且数据库服务在docker-compose.yml
中定义如下:
sql.data:
image: microsoft/mssql-server-linux:2017-latest
environment:
- ID=SA
- PASSWORD=Pass@word
- ACCEPT_EULA=Y
ports:
- "1433:1433"
当我尝试在我的应用程序中连接到数据库(使用实体框架)时,我收到以下错误:
SqlException:用户“SA”登录失败。
为了调试它,我登录到 docker 镜像,并尝试使用以下命令从 docker 访问数据库:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Pass@word"
然后我收到以下错误:
..
我尝试了"
(双引号)、'
(单引号),并且没有引用用户名和密码,以及两者的任意组合,但仍然得到相同的错误。
【问题讨论】:
你设置了这个服务器吗? sa 帐户可能被禁用了吗?可以通过 SSMS 连接吗? 不,我没有设置服务器,它是官方的docker镜像,没有任何变化。对MS SQL不是很熟悉,我怎么SSMS?! SSMS 是 MSFT 用于连接、维护和查询 MS SQL Server 的工具,因此使用除 ODBC 之外的其他工具会告诉您是登录名/密码还是 ODBC。 docs.microsoft.com/en-us/sql/ssms/… Linux,嘿?你试过小写sa
而不是大写SA
吗?
@AlwaysLearning,是的,我做了,但没用。
【参考方案1】:
尝试在您的用户名和密码周围添加 '(引号): '萨' '密码@word'
"ConnectionStrings":
"DefaultConnection": "Server=sql.data,1433;MultipleActiveResultSets=true;User Id='SA';Password='Pass@word'"
,
【讨论】:
【参考方案2】:将连接字符串中的Password
替换为SA_Password
:
"ConnectionStrings":
"DefaultConnection": "Server=sql.data,1433;MultipleActiveResultSets=true;User Id=SA;SA_Password=Pass@word"
,
【讨论】:
以上是关于Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:用户“SA”登录失败的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC
odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)
PHP 警告:odbc_connect():SQL 错误:[Microsoft][ODBC Microsoft Access Driver]一般错误无法打开临时注册表项(易失性)
odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 参数太少。预期 1.,SQLExecDirect 中的 SQL 状态 0700