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

时间:2009-05-11 17:31:22

标签: sql sql-server-2008

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

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

dialog

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

11 个答案:

答案 0 :(得分:405)

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

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

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

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

<小时/> 例如:runas /netonly /user:domain\username ssms.exe

答案 1 :(得分:154)

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

答案 2 :(得分:107)

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

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

不要问我为什么! :)

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

答案 3 :(得分:10)

<div ng-controller="TimeController as vm"> <form name="vm.timeForm" novalidate> <div class="form-group"> <label>If you enter any value here below two fields becomes mandatory, If I am empty below fields are not mandatory. </label> <input type="number" name="firstfield" class="form-control" ng-model="vm.firstfield" required> </div> <div class="form-group"> <label>Please select</label> <select class="form-control" ng-model="vm.selectedOption" ng-change="vm.updateMinMax()" ng-required="vm.firstfield"> <option value="hours">HOURS</option> <option value="minutes">MINUTES</option> <option value="seconds">SECONDS</option> </select> </div> <div class="form-group" ng-class="{ 'has-error' : vm.timeForm.desiredRPO.$invalid && !vm.timeForm.desiredRPO.$pristine }"> <label>Desired Time</label> <input type="number" name="desiredRPO" class="form-control" ng-model="vm.desiredRPO" ng-min="vm.minValue" ng-max="vm.maxValue" ng-required="vm.firstfield"> <p ng-show="vm.timeForm.desiredRPO.$invalid" class="help-block">Please enter value between {{vm.minValue}} and {{vm.maxValue}}</p> </div> </form> </div> 命令仅适用于runas /netonly /user:domain\username program.exe

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

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

答案 4 :(得分:5)

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

而是在连接到服务器对话框中,选择&#34; Windows身份验证&#34;,单击选项按钮,然后在其他连接参数选项卡上,输入&#34; user id = domain \ user; password =密码&#34;没有引号。

SSMS不记得了,但它将与该帐户建立联系。

答案 5 :(得分:3)

一些PowerShell魔法会起到作用:

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

然后只需选择Windows身份验证

答案 6 :(得分:1)

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

正如gbn所提到的,集成身份验证使用与您的Windows身份相对应的特殊令牌。有一种称为“模拟”的编码实践(可能由Run As ...命令使用),它允许您作为另一个Windows用户有效地执行活动,但实际上没有办法任意地充当不同的用户(例如Linux)在Windows应用程序之外。

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

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

答案 7 :(得分:0)

没有

你能在SQL Server 2000企业管理器中使用吗?我不记得因为Windows身份验证使用当前登录的用户,因为它依赖于登录时生成的NT登录令牌。

“跑步”的唯一方法。

您是否对域名之间有信任?

答案 8 :(得分:0)

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

enter image description here

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

enter image description here

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

答案 9 :(得分:0)

有人试过没有参数的“普通”runas 吗?那些 /netonly /savcecred 听起来很模棱两可,对我来说完全是胡说八道。

C:\Windows\System32\runas.exe /user:DOMAINX\OtherUser02 "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\ssms.exe"

这很好用。无论如何,runas 都会要求您提供用户密码。只需输入并符合安全审核要求。

答案 10 :(得分:-2)

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