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

Posted

技术标签:

【中文标题】使用 Windows 身份验证远程访问的 Visual Basic Sql 连接字符串【英文标题】:Visual Basic Sql Connection String using Windows Authentication Remote Access 【发布时间】:2014-05-08 13:46:02 【问题描述】:

这有一个很长的背景故事,但总而言之,我试图在我的 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】:

对于 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 运行连接。

【讨论】:

“User.Identity”参数引发错误。我应该如何将我从用户那里获得的域\用户名\密码分配给新身份。 @user3473944:看看这个:***.com/questions/18835134/…

以上是关于使用 Windows 身份验证远程访问的 Visual Basic Sql 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

在远程访问服务器上禁止使用选定的身份验证协议 是啥意思啊

我在服务器上的iis上的身份验证选项中去掉了匿名访问,启用了集成windows身份验证

windows远程桌面连接时,显示发生身份验证错误,给函数提供的身份无效

本地 SQL 和 Windows 身份验证的不同模拟

是否可以使用非交互式的默认Windows凭据对远程Git存储库进行身份验证?

win10远程桌面显示发生身份验证错误(代码:0x800706be)是怎么回事啊