这是通用连接属性对话框(注意选择 Windows Auth 时灰色的 UID/PWD): FYI - 一种解决方法是使用
runas
,但我正在寻找一种解决方案,允许我跨多个服务器(以及多个域)使用多个 Windows 帐户。runas
,但我正在寻找一种解决方案,允许我跨多个服务器(以及多个域)使用多个 Windows 帐户。虽然在单个SSMS实例中无法以不同用户身份连接到多个服务器,但您需要的是以下RUNAS语法:
runas /netonly /user:domain\username program.exe
当您使用/netonly
开关时,即使没有建立信任关系,您也可以使用远程凭据登录到您当前不是成员的域。它只是告诉runas凭据将用于访问远程资源 - 应用程序与当前登录用户交互,与远程计算机作为您提供的凭据的用户交互。
您仍然需要运行多个SSMS实例,但至少您可以在每个实例中作为不同的Windows用户连接。
按住shift键并右击 SQL Server Management Studio 图标。这样您可以以其他Windows账户用户身份运行。
我发现的另一种方法是进入“开始” > “控制面板” > “存储的用户名和密码”(Windows 7 中的“管理工具” > “凭据管理器”),然后添加你想要在“runas”命令中使用的域账户。在 Windows 7 及更高版本中,请确保在“Windows 凭据”下添加。
然后,在 SQL Management Studio 2005 中,只需选择“Windows 身份验证”,并输入你想要连接的服务器(即使你可以看到灰色不可用的本地用户)...它会起作用!
不要问我为什么! :)
编辑: 在凭据管理器中的服务器名称后面加上“:1433”,否则可能无法连接,因为不信任该域。
这些答案都没有满足我的需求:在连接到远程服务器时,使用与我在本地计算机上登录的不同域账户(客户端跨VPN的域),而我不想进入他们的域!
相反,在“连接到服务器”对话框中,选择“Windows身份验证”,单击“选项”按钮,然后在“附加连接参数”选项卡中输入:
user id=domain\user;password=password
SSMS不会记住,但它会连接到该账户。
runas /netonly /user:domain\username program.exe
命令只在 Windows 10
上对我有效。
当作为普通用户运行命令批处理时,我遇到了一些用户在之前评论中提到的错误密码问题。
cmdkey /add:"SERVER:1433" /user:"DOMAIN\USERNAME" /pass:"PASSWORD"
有很多地方可能需要部署这种场景,但由于集成身份验证的工作方式,这是不可能的。
正如gbn所提到的,集成身份验证使用一个特殊的令牌来对应你的Windows身份。有一些编程实践称之为“模拟”(可能被Run As...命令使用),允许你有效地以另一个Windows用户的身份执行某项活动,但除此之外,在Windows应用程序中任意地像Linux那样以不同用户的身份进行操作并不是真正可行的。
如果你确实需要管理几个域中的多个服务器,可以考虑以下几点:
希望这有所帮助!
C:\Windows\System32\runas.exe /user:DOMAINX\OtherUser02 "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\ssms.exe"
这个完全没问题。无论如何,runas都会要求你输入用户密码。只需输入密码,即可符合安全审计要求。