我有一个网站,我尝试设置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管理员甚至没有尝试连接到服务器来验证凭据。我可以检查什么来证明这个/我该如何解决这个问题?
我尝试的事情:
更新1 : DBA刚刚告诉我,web.account实际上是一个Windows帐户,而不是一个SQL帐户。我想这就是odbc无法正常工作的原因,因为它不会尝试连接为不同的Windows用户,只能作为当前的Windows用户。那么现在问题是,如何使用不同的Windows帐户设置DSN?或者,这甚至可能吗?
答案 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
这是我用来连接的。