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

前端之家收集整理的这篇文章主要介绍了SQL Server 2008错误18456状态58,用户登录失败“前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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身份验证,并且必须有其他错误.

猜你在找的MsSQL相关文章