在SQL Server Management Studio中连接不同的Windows用户(2005或更高版本)

Mat*_* P. 320 sql sql-server-2008

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

这是常规连接属性对话框(请注意选择Windows Auth时灰色的UID/PWD):

对话

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

Sql*_*yan 411

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

runas /netonly /user:domain\username program.exe
Run Code Online (Sandbox Code Playgroud)

当您使用"/ netonly"开关时,即使没有设置信任,您也可以使用您当前不是其成员的域上的远程凭据登录.它只是告诉runas凭据将用于访问远程资源 - 应用程序作为当前登录用户与本地计算机交互,并作为您已提供凭据的用户与远程计算机进行交互.

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


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

  • 如果您想要相同的域但不同的用户删除/ netonly开关. (27认同)
  • +1目前最方便的做法.MS无法将MSTSC /远程桌面式登录对话框折叠到SSMS中并按连接配置它,这仍然是蹩脚的. (7认同)
  • 哇!netonly!太棒了.虽然一旦它运行,当你尝试使用Windows身份验证连接到远程服务器时,它会很有趣,它会显示本地用户,而不是netonly用户.当它连接时使它看起来像魔术...... (6认同)
  • 关于netonly开关的事情绝对是金色的.我需要这么多场景.谢谢. (5认同)
  • user175017的以下答案对我有用,看起来更容易,并允许在一个SSMS会话中使用特定于服务器的Windows连接.简而言之,在Win 7上运行"Credential Manager",只需为<servername>添加Windows凭据:1433,其中<servername>是SQL Server计算机,完全限定(如MyServer.MyCompany.Com). (2认同)

小智 156

按住shift并右键单击SQL Server Mangement studion图标.您可以像其他Windows帐户用户一样运行.

  • 不幸的是,当帐户在另一个域/网络上时,这不起作用 - 它返回无效的用户名/密码.无论该帐户在另一个网络上,上述命令都有效. (30认同)
  • 如何以其他 Windows 帐户用户和 *** 管理员*** 身份运行? (2认同)

小智 110

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

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

别问我原因!:)

编辑:确保在凭据管理器中的服务器名称后面包含":1433",或者由于不信任域而可能无法连接.

  • 您可能需要使用sqlserver.domain.com:1433作为网络地址.请参见http://stackoverflow.com/questions/6944933 (16认同)
  • 老实说,这个答案应该标记出来.runas解决方案对我来说不起作用,并且因为smss不喜欢在控制台中启动而产生了一个令人头疼的问题,这就是当你在smss中调用时会发生的事情.甚至一旦停止发生,它仍然无法正常工作.但Credential Manager>添加Windows凭据有效.输入服务器名称,DOMAIN \用户名和密码.就像他说的那样,它仍然会显示本地用户,但无论如何它都会连接. (10认同)
  • 事实上,这对我有用,似乎更容易,并允许在一个SSMS会话中特定于服务器的Windows连接.我刚刚运行了"Credential Manager",并为<servername>添加了Windows凭据:1433,其中<servername>是SQL Server计算机,完全限定(如MyServer.MyCompany.Com). (7认同)

小智 10

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

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

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


Dav*_*ave 7

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

而是在"连接到服务器"对话框中,选择"Windows身份验证",单击"选项"按钮,然后在"其他连接参数"选项卡上,输入"user id = domain\user; password = password",不带引号.

SSMS不会记住,但它将与该帐户连接.

  • 如果当前运行 __ssms.exe__ 的用户是本地用户,则此操作不起作用。在这种情况下,您需要按照 @SqlRyan 的建议使用 runas (3认同)

mae*_*eak 7

一些 powershell 魔法可以解决这个问题:

cmdkey /add:"SERVER:1433" /user:"DOMAIN\USERNAME" /pass:"PASSWORD"
Run Code Online (Sandbox Code Playgroud)

然后只需选择Windows身份验证


cma*_*tin 6

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

在此处输入图片说明

按住 Shift 并右键单击文件夹中的快捷方式或 ssms.exe 文件。按住 shift 会给你一个额外的选项“以不同的用户身份运行”:

在此处输入图片说明

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


Ed *_*fer 1

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

\n\n

正如 gbn 所提到的,集成身份验证使用与您的 Windows 身份相对应的特殊令牌。有一些称为“模拟”的编码实践(可能由“运行方式...”命令使用)允许您以另一个 Windows 用户的身份有效地执行活动,但实际上并没有一种方法可以任意充当不同的用户 (\xc3除此之外,Windows 应用程序中的 \xa0 la Linux)。

\n\n

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

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

希望这有帮助!

\n