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

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



仅供参考-一种解决方法是使用runas,但我正在寻找一种解决方案,可以让我正常工作跨多个服务器(和多个域)的多个Windows帐户。

评论

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

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

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

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

#1 楼

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

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


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

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


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

评论


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

– Jimconstable
2011-2-3在0:08

关于netonly开关的事情绝对是黄金。如此之多的场景,我需要这个。谢谢。

–吉夫科·佩蒂耶夫(Jivko Petiov)
2012年3月15日12:57

+1是目前最方便的方法。 MS不能仅将MSTSC /远程桌面样式的登录对话框折叠到SSMS并为每个连接配置它,这还不赖。

– Paul Smith
2012年7月3日在18:42

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

– TTT
2012年12月8日下午6:27

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

– David Korn
2013年12月4日,0:24

#2 楼

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

评论


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

–杰拉德·罗斯(Jerad Rose)
2013年9月9日在2:13

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

–如来
2013年11月6日0:00

适用于Windows 10。

– wrkwrk
16年1月19日,下午5:21

在不同的领域为我工作。

–塔希尔·哈桑(Tahir Hassan)
16 Mar 15 '16 at 10:36

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

– Kiquenet
16年11月18日在12:47

#3 楼

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

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

不要问我为什么! :)

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

评论


老实说,这个答案应该标出来。 Runas解决方案对我不起作用,并且让您感到头疼,因为smss不喜欢在控制台中启动,而在smss中调用时会发生这种情况。而且即使这种情况停止了,它仍然没有起作用。但是凭据管理器>添加Windows凭据有效。输入服务器名称,您的DOMAIN \ user用户名和密码。就像他说的那样,它仍然会显示本地用户,但是无论如何它都会连接。

–布赖恩·阿苏加(Brian Arsuaga)
2012年10月22日18:37



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

–格雷格·布雷(Greg Bray)
2013年9月13日在18:44

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

– David Korn
2013年12月4日,0:28

Runas方法对我不起作用,但确实可以。我最初尝试在Credential Manager中没有端口信息,但仍然无法登录。当我在Credential Manager中添加端口信息时,它就像一种魅力。非常感谢你做的这些!

–René
2014年6月10日上午11:23

这可能是最优雅的解决方案。对于我来说,在Windows 8.1中可以连接到一个甚至不属于域的SQL 2012独立实例。 <服务器名称>:1433

–蒂姆·莱纳(Tim Lehner)
14年7月14日在17:06

#4 楼

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

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

 user id=domain\user;password=password
 


SSMS不会记住,但它将与该帐户建立连接。

评论


这在SQL Server Management Studio 2017中为我工作

–natbob1
19年2月12日在14:28

通常,我使用runas / netonly命令,但是我只是想尝试一下,这太神奇了!这是一个易于使用的解决方案,可以通过其他Win信誉将您已经打开的ssms实例连接到另一台服务器!非常感谢本技巧,不必再次在ssms窗口之间切换;)

–费利克斯·拜耳
20-11-18在8:24

#5 楼

runas /netonly /user:domain\username program.exe命令仅在Windows 10上对我有效。


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

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

评论


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

–尼尔
17年7月27日在16:18



#6 楼

可以使用一些Powershell魔术来解决问题:

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


然后只需选择Windows身份验证

#7 楼

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



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



这将弹出一个登录框,您可以键入您想要的会话凭据在...下运行。

#8 楼

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

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

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


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

希望这会有所帮助!

评论


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

–克里斯·皮尔斯(Chris Pierce)
17年11月25日在23:50

#9 楼

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

评论


唯一的办法?一点也不。

–米歇尔·德·瑞特(Michel de Ruiter)
13年11月11日在8:19