【问题标题】:Sql server authentication fails using SSMS but works when using sqlcmd使用 SSMS 的 Sql 服务器身份验证失败,但在使用 sqlcmd 时有效
【发布时间】:2013-12-21 14:46:40
【问题描述】:

我已将我的 SQLServer 2005 Standard 实例配置为混合模式。使用 SSMS 时,似乎所有 sql server 登录都不起作用。只是“用户'..'登录失败”消息。但是当我使用 SQLCMD 时,它工作正常。该行为不仅仅针对一个特定的登录帐户。通过 SSMS 尝试时,包括“sa”在内的所有 sql server 登录都会失败。 Windows 登录工作正常。

有什么想法吗?

EDIT1: 通过 SQLCMD 连接时,我没有指定 -S 选项。只是 -U 和 -P 而在 SSMS 中,服务器名称默认为机器名称。 在 SSMS 中,服务器似乎注册为 xxxxN。当我使用 Windows 身份验证连接时,我的 @@servername 返回 xxxx_N。 当我尝试在 SSMS 中使用 xxxx_N 时,它完全无法连接。

编辑2: 通过 SQLCMD 尝试时,如果我将 -S 选项设置为 xxxxN,它也可以正常工作。

编辑3:

我的 SQLCMD:

C:...>SQLCMD -U sa -P 密码(有效)

C:...>SQLCMD -S xxxxN -U sa -P 密码(有效)

C:...>SQLCMD -U test -P 密码(有效)

C:...>SQLCMD -S xxxxN -U test -P 密码(有效)

在 SSMS 中:

服务器类型:数据库引擎

服务器名称:xxxxN

身份验证:Windows 身份验证(有效)

服务器类型:数据库引擎

服务器名称:xxxxN

身份验证:Sql Server 身份验证

登录:sa

密码:密码(失败)

服务器类型:数据库引擎

服务器名称:xxxxN

身份验证:Sql Server 身份验证

登录:测试

密码:密码(失败)

编辑 4(答案)

使用 sql 帐户的 ODBC 连接似乎工作正常。 来自远程机器的 SSMS 连接也可以正常工作。 这必须是本地 SSMS 安装的问题。我相信重新安装会解决这个问题..

【问题讨论】:

  • 你能显示你的sqlcmd参数吗? (当然要替换敏感信息,但要完整的命令行调用)
  • @granadaCoder 编辑更多信息。谢谢
  • 在 sql server 上使用 SSMS 登录也失败了?
  • SQL Server 错误日志是否包含与失败登录相关的更多信息?
  • 使用 sqlcmd 和 sa 登录连接到实例,然后执行 select * from sys.dm_exec_connections,它说您使用的是什么协议?

标签: sql-server sql-server-2005


【解决方案1】:

您的服务器/实例名称在两者之间不一致。

我的机器名\快递

是“最常见”的实例名称。

但你的可能会有所不同。

因为 sqlcmd “有效”。

运行 sqlcmd,并将此命令传递给它

select  [MyServerAndMaybeInstanceName] = @@servername

然后你就会知道在 SSMS 中添加什么了! (哒哒!)

编辑:

你在sqlcmd中说,你给它

-U and -P 

因此您正在使用 Sql 身份验证。 (而不是 Windows 身份验证)

您是否在尝试通过 SSMS 时提供 Sql 身份验证凭据

我看到你说“所有 sql server 登录,包括 'sa'” 因此您正在尝试 Sql 身份验证凭据。 您能否验证一下您是否尝试了一些 Sql 身份验证信用,可能是 sa 之外的其他东西。

编辑:

这是一个猜测,但我有一次,很久以前。

In the SSMS connection box, click "Connection Properties"
Find "Network".
And pick TCP/IP as the network protocol.

特别是如果机器是远程机器。

编辑:

这是另一个穷人的测试。

转到控制面板/管理工具/数据源 (ODBC)/系统 DSN。并尝试在那里添加连接。

您还可以使用向导中的“客户端配置”按钮来使用那里的协议(命名管道与 tcp/ip 等)。

【讨论】:

  • 这就是我在编辑中试图解释的内容。当我输入@@servername 给我的确切字符串时,SSMS 尝试在连接阶段本身就失败了。在 SSMS 中的注册服务器列表中,它显示为 xxxxN,其中 @@servername 返回 xxxx_N
  • 当然我正在使用 Sql 身份验证凭据。甚至我的“sa”帐户也无法使用。我创建了一些新的 sql 帐户,它们都不起作用。
  • 我也尝试过其他帐户。我创建了一个新的 sql 帐户并尝试通过 SSMS 使用它(失败),但是当我使用 SQLCMD 使用它时它起作用了。
  • 使用 sql server 身份验证,我尝试了所有可用的网络协议选项(默认、共享内存、tcp/ip、命名管道)。他们都没有工作
  • 我试过 odbc 路由,效果很好。我认为我的 SSMS 有问题。来自不同机器的 SSMS 工作正常!!!!肯定是服务器上的 SSMS 问题
猜你喜欢
  • 2020-06-21
  • 2015-12-07
  • 1970-01-01
  • 2013-01-02
  • 2018-11-02
  • 1970-01-01
  • 2020-06-17
  • 2016-02-27
  • 2015-04-06
相关资源
最近更新 更多