使用另一个用户和密码运行 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 命令的主要内容,如果未能解决你的问题,请参考以下文章