【问题标题】:Can you set a stored procedure to always execute as a specific user?您可以将存储过程设置为始终以特定用户身份执行吗?
【发布时间】:2014-03-07 21:23:17
【问题描述】:

我想将存储过程设置为始终作为特定域用户执行。无论用户调用或尝试执行该过程,我是否可以强制该过程以另一个用户身份执行。

我们的一个供应商将他们的应用程序硬编码为使用本地数据库帐户来执行某些过程以导入一些 csv 文件。不幸的是,我们不能将 csv 文件存储在本地数据库服务器上,需要将它们放在网络共享上。因此,我需要将这些过程设置为作为域用户执行,该用户可以访问我将放置文件的网络共享。以下语句授予执行权限,但我需要强制 sp 作为特定用户执行的东西。

CREATE ROLE exec_procs
GRANT EXECUTE ON sys.sp_oaMETHOD TO [domain\user]

【问题讨论】:

    标签: sql tsql sql-server-2012


    【解决方案1】:

    你想使用EXECUTE AS in the SP definition.

    CREATE PROCEDURE dbo.MyProcedure
    WITH EXECUTE AS 'domain\user'
    AS
    ...
    

    或者,您可以在 SP 内execute only certain commands as the user

    EXECUTE AS USER = 'Domain\User'
      <Commands>
    REVERT
    

    在您的情况下,第二个选项可能更可取,以防止授予另一个登录访问数据库的权限。

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 2017-07-28
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多