这有一个很长的背景故事,但总结一下,我试图在我的VB程序中创建一个SQL Server连接,以自动运行一些查询并显示结果。过去,当服务器在我的网络上时,我能够轻松地做到这一点。现在我的公司正在迁移到托管服务器,我遇到了问题。
使用RUNAS命令时,我可以使用SSMS成功连接到服务器:
runas /netonly /user:[network domain]\[username] "C:\Program Files (x86)\Microsoft SQLServer\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"
但我无法弄清楚如何以类似的方式设置VB程序SQL连接字符串。
我知道我可以使用Integrated Security = SSPI
来指定Windows身份验证,但我还需要传递用户名和密码以及网络/域信息。
当我尝试这样做时,我得到一个"用户登录失败......"消息或"登录来自不受信任的域,不能与Windows身份验证一起使用"集成安全性= SSPI。
有一些关于Windows模拟的内容,但我无法掌握它在这里的运作方式。
如果可能的话,这些更改几乎完全取决于我的结果,因为托管公司非常......挑剔......关于对其环境或设置进行任何更改。
我呼吁互联网的智慧寻求答案!
额外事实: SQL Server 2008,Windows 7,Microsoft Visual Studio 2013,Windows窗体程序
答案 0 :(得分:2)
对于ASP.NET有一个很好的knowledge base article,但我认为代码解决方案也适用于其他平台:
Dim impersonationContext As System.Security.Principal.WindowsImpersonationContext
Dim currentWindowsIdentity As System.Security.Principal.WindowsIdentity
currentWindowsIdentity = CType(User.Identity, System.Security.Principal.WindowsIdentity)
impersonationContext = currentWindowsIdentity.Impersonate()
'Insert your code that runs under the security context of the authenticating user here.
impersonationContext.Undo()
在内部,您可以像平常一样运行与SSPI的连接。