在SQL Server Management Studio(2005或更高版本)中连接其他Windows用户


333

在SQL Server Management Studio 2005(或更高版本)中,是否可以更改Windows身份验证用户(就像在SQL Server 2000和更早版本中一样)?

这是“常规连接属性”对话框(请注意,选择“ Windows身份验证”时显示为灰色的UID / PWD):

对话

仅供参考-一种解决方法是使用,runas但我正在寻找一种解决方案,该解决方案将允许我在多个服务器(和多个域)中使用多个Windows帐户。


2
据我所知,“运行方式...”是实现此目标的唯一方法。您为什么不能使用“运行方式...”而只为每个用户启动一个不同的Management Studio会话?
DCNYAM,2009年

4
仅当您位于同一域和/或林中时,运行方式才有效。如果您是顾问,那么您永远不会在同一个域和/或林中,因此这将是一个不错的功能。
埃里克

我能感觉到你,埃里克。有时,我将VM与客户端一起使用,以便虚拟机可以成为客户端域/林的一部分,并允许我更无缝地工作,但是如果您正在积极地使用多个域,这可能会很乏味。
Ed Altorfer

6
多个域是一种用例。另一个是Windows服务,它们使用自己的服务帐户登录,而开发人员则希望验证SQL连接性,权限等。听起来我不走运。。。至少我们有符文。
Matt P.

Answers:


418

虽然无法在单个SSMS实例中以不同用户身份连接到多台服务器,但您正在寻找以下RUNAS语法:

runas /netonly /user:domain\username program.exe

当您使用“ / netonly”开关时,即使没有建立信任关系,也可以使用远程凭据在当前不是其成员的域上登录。它只是告诉runas凭据将用于访问远程资源-该应用程序以当前登录的用户身份与本地计算机交互,并以您提供其凭据的用户身份与远程计算机交互。

您仍然必须运行多个SSMS实例,但是至少您可以在每个实例中以不同的Windows用户身份进行连接。


例如: runas /netonly /user:domain\username ssms.exe


28
如果要使用相同的域,但要使用不同的用户,请删除/ netonly开关。
jimconstable 2011年

5
关于netonly开关的事情绝对是黄金。如此之多的场景,我需要这个。谢谢。
耶夫科·佩蒂耶夫

7
+1是目前最方便的方法。MS不能仅将MSTSC /远程桌面样式的登录对话框折叠到SSMS并按连接配置它,这仍然是la可惜。
保罗·史密斯

7
哇!netonly!太棒了 有趣的是,一旦运行,当您尝试使用Windows Auth连接到远程服务器时,它将显示您的本地用户,而不是netonly用户。连接时让它看起来像魔术...
TTT 2012年

2
user175017的以下回答对我有用,似乎更容易,并且允许在一个SSMS会话中进行服务器特定的Windows连接。简而言之,在Win 7上,运行“凭据管理器”,然后为<servername>:1433添加Windows凭据,其中<servername>是完全合格的SQL Server计算机(例如MyServer.MyCompany.Com)。
David Korn

161

按住shift并右键单击“ SQL Server Mangement”工作室图标。您可以以其他Windows帐户用户身份运行。


31
不幸的是,当帐户位于另一个域/网络上时,此方法不起作用-它返回无效的用户名/密码。不管该帐户在另一个网络上,以上命令均有效。
耶拉德·罗斯

1
这对我有用!就我而言,我在同一个域下有两个帐户。
Tathagata 2013年

在Windows 10中可以使用
。– wrkwrk

在不同的领域为我工作。
塔希尔·哈桑

1
如何以其他Windows帐户用户和管理员身份运行?
Kiquenet '16

116

我发现的另一种方法是转到“开始”>“控制面板”>“存储的用户名和密码”(在Windows 7中为“管理工具”>“凭据管理器”),然后添加将与“ runas”命令一起使用的域帐户。 。

然后,在SQL Management Studio 2005中,只需选择“ Windows身份验证”并输入您要连接的服务器(即使您可以看到变灰的用户仍然是本地用户)...并且可以使用!

不要问我为什么!:)

编辑:确保在凭据管理器中的服务器名称后包含“:1433”,否则由于不信任域而可能无法连接。


10
老实说,这个答案应该标出来。Runas解决方案对我不起作用,并且令我头痛的是,smss不喜欢在控制台中启动,而在smss中调用时会发生这种情况。甚至一旦这种情况停止发生,它仍然无法正常工作。但是凭据管理器>添加Windows凭据有效。输入服务器名称,您的DOMAIN \ user用户名和密码。就像他说的那样,它仍然会显示本地用户,但是无论如何它都会连接。
Brian Arsuaga 2012年

16
您可能需要使用sqlserver.domain.com:1433作为网络地址。见stackoverflow.com/questions/6944933
Greg Bray 2013年

7
确实,这对我有用,似乎容易得多,并且允许在一个SSMS会话中进行服务器特定的Windows连接。我只是运行“凭据管理器”,并添加了<servername>:1433的Windows凭据,其中<servername>是完全合格的SQL Server计算机(例如MyServer.MyCompany.Com)。
大卫·科恩

1
runas方法对我不起作用,但是对我有用。最初,我尝试在Credential Manager中没有端口信息,但是仍然无法登录。在Credential Manager中添加端口信息时,它就像一个魅力一样工作。非常感谢你做的这些!
勒内·

1
这可能是最优雅的解决方案。对于连接到SQL 2012独立实例(甚至不是域的一部分)的我来说,它在Windows 8.1中工作。<服务器名称>:1433
蒂姆·莱纳

10

runas /netonly /user:domain\username program.exe命令仅对我有用Windows 10

  • 将其另存为批处理文件
  • 以管理员身份运行它,

当以普通用户身份运行命令批处理时,我收到了一些用户在以前的评论中提到的错误密码问题。


这对我也起作用,域之间没有信任关系。我能够启动SSMS并使用其他域帐户连接到SQL Server(即使在用户界面中它说它将使用本地域帐户。)
Neil

10

这些答案都不能满足我的需要:使用与我在本地计算机上登录时不同的域帐户登录到远程服务器,并且这是跨VPN的客户端域。我不想成为他们的域名!

相反,在“连接到服务器”对话框中,选择“ Windows身份验证”,单击“选项”按钮,然后在“其他连接参数”选项卡上,输入

user id=domain\user;password=password

SSMS不会记住,但是它将与该帐户建立联系。


这在SQL Server Management Studio 2017中对我
有用-natbob1

6

可以使用一些功能强大的魔术来解决问题:

cmdkey /add:"SERVER:1433" /user:"DOMAIN\USERNAME" /pass:"PASSWORD"

然后只需选择Windows身份验证


这是我的线索,谢谢!
David Cumps

1

对于Windows 10:转到Sql Management Studio图标,或单击菜单中的“快捷方式”:右键单击>选择“打开文件位置”

在此处输入图片说明

按住Shift并右键单击文件夹中的快捷方式或ssms.exe文件。按住shift键将为您提供一个额外的选项“以其他用户身份运行”:

在此处输入图片说明

这将弹出一个登录框,您可以输入要在其上运行会话的凭据。


很棒的提示,谢谢!它解决了我的问题;)
Hallaghan

0

在很多地方,有些人可能想部署这种方案,但是由于集成身份验证的工作方式,所以这是不可能的。

如gbn所述,集成身份验证使用与您的Windows身份相对应的特殊令牌。有一种称为“模拟”的编码做法(可能由“运行方式...”命令使用),可以让您以另一个Windows用户的身份有效地执行一项活动,但是实际上并没有一种可以任意地扮演另一个用户的方式(àla除此之外,Windows应用程序中的Linux)。

如果确实需要跨多个域管理多台服务器,则可以考虑以下方法之一:

  1. 设置域信任之间,以便您的帐户可以访问信任域中的计算机
  2. 在需要管理的所有服务器上配置SQL用户(使用混合身份验证),以便您可以这种方式登录;显然,如果您必须在某个时候更改所有密码,这可能会带来一些安全问题并造成维护噩梦。

希望这会有所帮助!


不可能是错误的...上面的runas / netonly / user:domain \ username program.exe可以正常工作。
克里斯·皮尔斯

-3

实现所需目标的唯一方法是通过右键单击快捷方式并使用“运行方式”功能来打开多个SSMS实例。


3
唯一的办法?一点也不。
米歇尔·德·瑞特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.