使用其他用户和密码运行t-SQL命令

时间:2014-11-17 21:41:12

标签: sql sql-server sql-server-2008

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

说明:

我的当前用户

  

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

我的管理员

  

USER:sa

     

通行证:12345

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

以下是两个选项:

  1. EXECUTE AS封装在只有您的用户具有EXECUTE权限的存储过程中。

    CREATE PROCEDURE dbo.DoSomething
    AS
    SET NOCOUNT ON;
    
    EXECUTE AS LOGIN = 'sa';
    
    -- do stuff
    
    REVERT;
    
  2. 通过签署存储过程来管理提升的权限,同样,只有您的用户具有EXECUTE权限,并带有证书。看看这个答案听起来像一个几乎相同的场景(答案不使用EXECUTE AS):

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

    签署存储过程路由的三个好处是:

    1. 您不必担心IMPERSONATE权限
    2. 你不必处理模仿的后果,这可能会起作用,这取决于冒充" sa"时正在进行的操作。
    3. 您可能甚至不需要完整的#34;系统管理员"证书。根据您正在执行的操作,您可以放弃分配更多限制性角色和/或权限,以避免额外代码允许执行任何内容的安全风险增加