使用另一个用户和密码运行 t-SQL 命令

Posted

技术标签:

【中文标题】使用另一个用户和密码运行 t-SQL 命令【英文标题】:Run t-SQL command using another user and password 【发布时间】:2014-11-17 21:41:11 【问题描述】:

T-SQL 问题: 我的用户不是管理员,但我只想使用我的 sa 用户和当前用户的密码运行查询。

解释:

我的当前用户

USER: [shashank] -- 这不是管理员用户

我的管理员

用户:sa

通过:12345

我以[shashank] 的身份登录,并且想在不登录[sa] 的情况下运行一些管理查询。

EXECUTE AS 似乎对我不起作用,因为它必须是 sysadmin 并且不需要密码。

提前致谢。

【问题讨论】:

您对EXECUTE AS 为何不适合您的解释不清楚。我就是这样做的…… 请清楚解释为什么“执行为”不起作用。 EXECUTE AS 按照 MSDN 网址link 我只能输入管理员用户名,如何在这种语法中输入密码?如果可能的话,你能分享一下确切的查询吗? 关于为什么EXECUTE AS 不起作用,这个问题可能会更清楚一些,但我认为它不值得投反对票。这是一个简洁的编程问题,OP 在来到 *** 之前已经努力尝试解决这个问题。 您无需使用EXECUTE AS 指定密码。您授予用户运行 Proc 或函数的权限,然后它就可以工作了。 Please see the documentation. 【参考方案1】:

这里有两个选项:

    EXECUTE AS 封装在只有您的用户拥有执行权限的存储过程中。

    CREATE PROCEDURE dbo.DoSomething
    AS
    SET NOCOUNT ON;
    
    EXECUTE AS LOGIN = 'sa';
    
    -- do stuff
    
    REVERT;
    

    通过签署存储过程来管理提升的权限,同样,只有您的用户拥有 EXECUTE 权限,并带有证书。看看这里的这个答案,听起来几乎是一模一样的场景(答案不使用EXECUTE AS):

    SQL Server: EXECUTE AS clause of stored procedure not granting sysadmin permissions

    采用签名存储过程路由的三个好处是:

      您不必担心IMPERSONATE 权限 您不必处理冒充的后果,这可能会发挥作用,具体取决于冒充“sa”时正在执行的操作。 您甚至可能不需要完整的“系统管理员”凭据。根据您正在执行的操作,您可能能够避免分配更多限制性角色和/或权限,以避免增加允许执行任何操作的代码的安全风险任何事情.

【讨论】:

我无法向当前用户提供运行 EXECUTE AS 命令的权限。所以我想如果有任何替代解决方案来运行管理员查询,只要我有管理员用户名和密码。 @Shashank:你看过这个答案的“或”部分吗?其他 S.O. 的链接问题涉及签署 proc,不需要 EXECUTE AS。

以上是关于使用另一个用户和密码运行 t-SQL 命令的主要内容,如果未能解决你的问题,请参考以下文章

sudo命令的简单使用

jmeter参数化

如何在 Windows 上使用另一个用户帐户创建新进程?

我想以另一个用户身份运行一个应用程序而无需编写密码

如何在 C# 中创建一个没有密码的另一个用户的进程?

Linux基础命令---sudo