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

Microsoft Access 和 Java JDBC-ODBC 错误

Windows XP 上的错误 [IM002] [Microsoft][ODBC 驱动程序管理器]