我们使用 Windows 身份验证连接到我们的内部 SQL Server 实例(2005 和 2008 的混合)。
当我打开 SQL Server Management Studio 并连接到服务器时,它显然使用我当前的域凭据连接了我。
是否有可能以某种方式覆盖它并以替代域用户身份登录?
目的是检查用户是否已正确设置并且可以访问我希望他们访问的数据库。
我知道我可以像他们一样登录到 Windows 会话,然后这样做,但这似乎有点乏味。
我们使用 Windows 身份验证连接到我们的内部 SQL Server 实例(2005 和 2008 的混合)。
当我打开 SQL Server Management Studio 并连接到服务器时,它显然使用我当前的域凭据连接了我。
是否有可能以某种方式覆盖它并以替代域用户身份登录?
目的是检查用户是否已正确设置并且可以访问我希望他们访问的数据库。
我知道我可以像他们一样登录到 Windows 会话,然后这样做,但这似乎有点乏味。
在进行了一些挖掘之后,似乎实现这一目标的唯一方法是通过 runas 命令:
或者对于 64 位环境,使用 32 位程序文件文件夹:runas /user:domain\user "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.可执行程序”
如果这样做,您将无法以他们的身份登录,但您将能够在 SQL Server 中验证他们的权限。如果您使用的是 T-SQL,则可以使用 EXECUTE AS 命令在 SQL Server 中模拟用户(使用 REVERT 切换回来)。例如:
IIRC,如果您将驱动器作为要使用的用户映射到服务器,则在服务器上执行任何其他操作之前,当您使用集成安全性连接时,将使用您已经在该服务器上建立的凭据。当我在不受服务器所在域信任的工作站工作时,我曾经这样做过。您仍然只能获得一组凭据,这个技巧不适用于两组不同的凭据。
此外,TSQL SETUSER 命令在这里也很有用。它可以让你冒充某人,有点像 su 在 linux 上所做的。2008 年的文档说这已被弃用,但我认为它仍然有效。