繁体   English   中英

SQL Server登录在连接字符串中有效,但在DSN中失败

[英]SQL Server login works in a connection string, but fails in DSN

我有一个网站,我正在尝试设置DSN而不是使用连接字符串,因为它似乎更安全。

以下连接字符串在我的网站上可以正常运行:

"Server=servername; database=mydb; user id= web.account; password=PassW0rd!; Integrated Security=SSPI"

但是,当我尝试设置DSN( 使用64位odbc admin )时,出现以下错误:

Connection failed:
SQLState: '28000'
SQL Server Error: 18456
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'web.account'

请记住,我使用与连接字符串中相同的帐户和密码(有效)。 这也很奇怪,因为在我单击“ SQL Server应如何验证登录ID的真实性?”上的“下一步”后立即发生错误。 页。

似乎odbc管理员甚至没有尝试连接到服务器来验证凭据。 我可以检查些什么来证明这一点/如何解决?

我尝试过的事情:

  • 我已经检查了服务器身份验证模式( 如其他解决方案中所建议的那样) ,并且应将其设置为“ SQL Server和Windows身份验证模式”。
  • 我尝试创建用户DSN和系统DSN都遇到相同的错误,这似乎进一步证明了它没有尝试连接到服务器以检查凭据。
  • 我在多个服务器上尝试了相同的DSN创建,但都遇到了相同的问题。 SQL Server是否可能拒绝这些类型的连接?

更新1 :DBA刚刚告诉我,web.account实际上是Windows帐户,而不是SQL帐户。 我想这就是odbc无法正常工作的原因,因为它不会尝试以其他Windows用户身份(仅以当前Windows用户身份)进行连接。 所以现在的问题是,如何用其他Windows帐户设置DSN? 还是有可能吗?

这篇帖子的回应是,使用NT身份验证的DSN设置专门针对整个系统,而不是特定帐户,因此可以从cmd使用runas命令,如下所示:

Runas / netonly /user:domain\\web.account“ C:\\ Windows \\ SysWOW64 \\ odbcad.exe”

然后它将要求您提供web.account密码。 然后,您可以创建一个DSN,这应该可以工作。

更新:我必须使用此方法将web.account用户添加到管理组 然后,我必须运行cmd作为我的提升帐户。 然后运行上面显示的runas命令。 然后,我终于能够创建一个非本地的DSN,这使我能够以其他Windows用户身份连接到数据服务器。

仍在等待DBA检查日志以说这是否确实有效,但是我对此感觉很好。 确认后将更新。

请尝试以下操作:

Data Source=servername;Initial Catalog=mydn;Persist Security Info=True;User ID=web.account;Password=Passw0rd

这就是我用来连接的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM