gpt4 book ai didi

SQL Server 2008 错误 18456 状态 58,用户“登录失败”

转载 作者:行者123 更新时间:2023-12-04 10:01:06 25 4
gpt4 key购买 nike

我有一个 Visual Studio C++ 项目(非托管 C++),我尝试在其中连接到 LAN 中另一台机器上的 SQL Server 2008 实例。我使用 TCP/IP。我的连接字符串是:

"DRIVER={SQL Server Native Client 10.0};Server=tcp:169.254.204.232,1433;Network Library=DBMSSOCN;Initial Catalog=myDB;User ID=myDBUser;Password=myPassword;"

重要事实: 我能够使用 SSMS 使用用户 ID myDBUser 和密码 myPassword 成功远程连接到该实例——使用 SQL 身份验证模式(并在连接选项中指定 TCP/IP)!此外,一旦登录,我就可以成功导航数据库 myDB。

所以是的,我在我的服务器上启用了混合模式身份验证。

另请注意,当我的实例在本地并且使用 Windows 身份验证时,相同的代码已成功连接。换句话说,自从整个事情最后一次工作以来发生的变化是我将我的服务器移到另一台机器上,现在使用 SQL 身份验证,因此更改了我的连接字符串——否则代码根本没有改变。

这是我在 SQL Server 2008 实例的服务器日志中收到的错误消息:

用户登录失败。原因:尝试使用 SQL 身份验证登录失败。服务器仅配置为 Windows 身份验证。
错误:18456,严重性:14,状态:58。

请注意,该错误消息中引用的用户为空,即使在我的连接字符串中我指定了一个非空的用户 ID。

我尝试过的其他连接字符串给出了相同的结果:
"DRIVER={SQL Server Native Client 10.0};Server=MACHINE2;Database=myDB;User ID=myDBUser;Password=myPassword;" (where MACHINE2 is the windows name of the machine hosting the sql server instance.)

我没有在上面的连接字符串中指定实例名称,因为我的实例是作为默认实例安装的,而不是命名实例。

关于如何解决这个问题的任何想法?

更新:我似乎解决了这个问题。您准备好找出该错误消息是多么愚蠢和完全无关了吗?
在连接字符串中,我只是将“用户 ID”更改为“uid”,将“密码”更改为“pwd”,现在它可以工作了。
我现在在我的 SQL Server 日志中看到“连接成功”...

最佳答案

尝试运行 SELECT SERVERPROPERTY('IsIntegratedSecurityOnly');如果它返回 1 是 Windows 身份验证,如果 0 混合。如果它返回 1 肯定是 Windows 身份验证,并且肯定有其他错误。

关于SQL Server 2008 错误 18456 状态 58,用户“登录失败”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14862217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com