小编典典

您可以将存储过程设置为始终以特定用户身份执行吗?

sql

我想将存储过程设置为始终以特定的域用户身份执行。无论用户调用还是尝试执行该过程,我都可以强制该过程以其他用户身份执行。

我们的供应商之一对其应用进行了硬编码,以使用本地db帐户执行某些过程以导入某些csv文件。不幸的是,我们无法将csv文件存储在本地数据库服务器上,而需要将它们放置在网络共享上。因此,我需要将这些过程设置为作为具有访问网络共享权限的域用户执行,该网络共享将放置文件。以下语句授予执行权限,但我需要强制sp作为特定用户执行的内容。

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

阅读 181

收藏
2021-04-14

共1个答案

小编典典

您要EXECUTE AS在SP定义中使用。

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

或者,您只能以SP中的用户身份执行某些命令

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

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

2021-04-14