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

时间:2014-12-23 14:05:33

标签: sql-server odbc windows-server-2008-r2 dsn

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

以下连接字符串在我的网站中正常工作:

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

但是,当我尝试设置DSN(using the 64-bit 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管理员甚至没有尝试连接到服务器来验证凭据。我可以检查什么来证明这个/我该如何解决这个问题?

我尝试的事情:

  • 我已检查服务器身份验证模式as proposed in other solutions,并且设置为" SQL Server和Windows身份验证模式",应该是这样。
  • 我尝试创建用户和系统DSN - 两者都得到相同的错误,这似乎是进一步的证据表明它没有尝试连接到服务器来检查凭据。
  • 我在多台服务器上尝试过相同的DSN创建,但都有同样的问题。是否有可能SQL Server拒绝这些类型的连接?

更新1 : DBA刚刚告诉我,web.account实际上是一个Windows帐户,而不是一个SQL帐户。我想这就是odbc无法正常工作的原因,因为它不会尝试连接为不同的Windows用户,只能作为当前的Windows用户。那么现在问题是,如何使用不同的Windows帐户设置DSN?或者,这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

This post有一个回复,说明使用NT身份验证设置的DSN专门用于整个系统,而不是特定帐户,因此可以从cmd使用runas命令,如下所示:

  

runas / netonly /user:domain\web.account" C:\ Windows \ SysWOW64 \ odbcad.exe"

然后会询问您web.account密码。然后你可以创建一个DSN,这应该可行。

更新:我必须使用this fine how-to将web.account用户添加到我的管理组。然后我必须运行cmd作为我提升的帐户。然后运行我上面显示的runas命令。然后,我终于能够创建一个非本机DSN,这允许我以不同的Windows用户身份连接到数据服务器。

仍在等待DBA检查日志,说这实际上是否有效,但我感觉非常好。确认后会更新。

答案 1 :(得分:-2)

尝试以下方法:

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

这是我用来连接的。