我正在尝试连接到另一个域中VPN上的远程SQL Server。当我在SQL Server上输入服务器名称并选择“其他连接参数”以添加学校所需的一些其他东西时:

Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password


我得到以下错误:


登录失败。该登录名来自不受信任的域,不能与Windows身份验证一起使用。


评论

Windows Credential Manager解决方案的唯一问题是,如果您拥有大量支持的数据库,则每个数据库都必须有一个条目,并且每次必须更新域密码时都要对其进行更新。对于某些人来说,可能是每30到60天。

这篇文章有些相关。

@smehaffie,您可以轻松地使用脚本和“ cmdkey / add”命令来维护密码-该密码也会更新。

#1 楼

您试图从应用程序的连接字符串中以纯文本形式传递Windows凭据。这根本不是Windows身份验证的工作原理,并且在很大程度上达不到目的。

您也不能只在自己的域中使用相同的密码创建相同的用户名,并期望它能神奇地起作用。域名仍然是验证的一部分-您的计算机必须是该域的一部分,或者您的计算机所在的域必须由学校的域信任。

我知道的唯一解决方法是针对SSMS(它也适用于其他应用程序,例如Plan Explorer和SentryOne),这就是此答案中描述的runas /netonly技巧。这会使Windows愚弄Windows以您指定的登录名而不是您自己的登录名启动SSMS(这不是您可以在SSMS的“连接属性”对话框中设置的,这是您需要从命令行或快捷方式启动SSMS的方式):

runas /netonly /user:domain\username "C:\path_to\ssms.exe"


这将提示您在远程域中输入密码。看起来好像正在使用您的本地Windows凭据,但不是。

它可以与任何应用程序一起使用,包括Visual Studio。

因此,您的选择是:


让大学允许您将计算机加入域中
让大学将您的域添加为受信任的域
在VPN内具有一个跳转框,该框允许您使用RDP并使用直接连接到SQL Server计算机的工具
使用SQL身份验证
通过SSMS或Visual Studio使用runas /netonly技巧


评论


没有命令提示符,有没有办法模仿这种行为?

–吉尔斯·莱斯雷(Gilles Lesire)
17年8月29日在11:08

@Gilles,您可以制作一个批处理文件,然后双击该批处理文件,或者您可以使用该字符串并创建快捷方式

–亚伦·伯特兰(Aaron Bertrand)
17年8月29日在16:18

如果您在每次运行runas / netonly或需要从批处理脚本中使用密码时都厌倦了键入密码,请参阅serverfault.com/q/784616/58957。

– Nickolay
1月23日22:13

#2 楼

还有一种方法,我现在优先使用runas /netonly方法。
您可以使用Windows控制面板中的凭据管理器将凭据添加到Windows中的配置文件中。


打开凭据管理器


单击“添加Windows凭据”


用名称和填充“ Internet或网络地址”字段您希望存储凭据的SQL实例的端口号。
示例:UniServer:1433(默认端口为1433,您可能需要其他端口,尤其是在连接到命名实例时)。


填充“用户名”(不要忘记包含域,例如MYDOMAIN\MYUSER


填充“密码”


单击“确定”


如果正确设置了服务器名称,端口和登录详细信息,则现在应该可以从大多数客户端工具,SSMS,Excel等使用Windows身份验证。它们都将使用存储的凭据。UniServer.UniDomain.org:1433,这全都取决于您的网络细节。到从我的桌面在VM中运行的SQL Server上,然后添加所需的凭据,然后再次尝试-成功。

评论


有趣!它似乎取决于客户端计算机认为远程计算机被调用的内容,而不是实际可能被调用的内容。我已经在我的主机文件中放置了一个IP地址的虚构条目(“ verysillytest.mwardm”)(因为我们这些人都无法从域外部访问),并以“ verysillytest.mwardm”名称设置了凭据: 1433“。然后,我可以使用主机名或IP地址(从名为Query Express的小应用程序)愉快地连接。

– mwardm
16-10-28在9:04

@mwardm是的,这就是为什么我建议使用ping或nslookup的原因,因为它会告诉您名称的确切用法,包括大写/小写字母。

– Magoo先生
16-10-28在9:28

嗯,“ ping -a”没有给我任何东西,而nslookup没有(立即)工作,因为我没有使用域的DNS服务器。不用担心,我实际上更喜欢只需要知道IP地址(和登录名)并能够自己命名的灵活性!

– mwardm
16-10-28在13:49

太棒了,它有效!我只是想知道-是应该这样工作还是SQL Server方面的错误或设计失败? Microsoft或Microsoft的员工在任何地方宣传您必须拥有连接域的计算机,否则无法连接到设置为仅接受域凭据的SQL Server。

– David FerenczyRogožan
16年11月16日在18:03

顺便说一句,我想这个答案应该标记为已接受,因为这似乎是一个真正的解决方案,而另一个答案更像是一种解决方法。

– David FerenczyRogožan
16年11月16日在18:36