使用Windows身份验证远程访问的Visual Basic Sql连接字符串

时间:2014-03-28 22:05:29

标签: sql sql-server vb.net vpn

这有一个很长的背景故事,但总结一下,我试图在我的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窗体程序

1 个答案:

答案 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的连接。