你可以设置一个存储过程始终执行特定的用户?(Can you set a stored procedu

2019-10-19 12:36发布

我想设置一个存储过程始终执行为特定领域的用户。 无论用户打电话或试图执行的程序,我可以强制为其他用户要执行的程序。

我们的一个供应商都有自己的应用程序的硬编码使用本地数据库帐户来执行某些程序导入一些的CSV文件。 不幸的是,我们不能存储在本地数据库服务器上的CSV文件,并需要将它们放置在网络共享。 因此,我需要设置这些程序与访问网络共享,我将放置文件的域用户执行。 下面的语句授予执行权限,但我需要的东西,迫使作为一个特定的用户要执行的SP。

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

Answer 1:

你想使用EXECUTE AS在SP定义。

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

另外,您也可以作为用户执行只有某些命令在SP中:

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

第二个选项可能是您的情况,以避免给人以数据库的另一个登录访问较好。



文章来源: Can you set a stored procedure to always execute as a specific user?