您是否可以将存储过程设置为始终作为特定用户执行?

时间:2014-03-07 21:23:17

标签: sql tsql sql-server-2012

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

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

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

1 个答案:

答案 0 :(得分:5)

您想使用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

在您的情况下,第二个选项可能更可取,以防止再次登录数据库。