我想设置一个存储过程以始终作为特定域用户执行。无论用户调用或尝试执行该过程,我都可以强制该过程以另一个用户的身份执行吗?
我们的供应商之一将其应用程序硬编码为使用本地数据库帐户来执行某些过程以导入某些 csv 文件。不幸的是,我们无法将 csv 文件存储在本地数据库服务器上,需要将它们放在网络共享上。因此,我需要将这些过程设置为以域用户身份执行,有权访问我将在其中放置文件的网络共享。以下语句授予执行权限,但我需要强制 sp 作为特定用户执行。
CREATE ROLE exec_procs
GRANT EXECUTE ON sys.sp_oaMETHOD TO [domain\user]
你想使用EXECUTE AS在 SP 定义中。
CREATE PROCEDURE dbo.MyProcedure
WITH EXECUTE AS 'domain\user'
AS
...
或者,您可以以用户身份仅执行某些命令SP 内:
EXECUTE AS USER = 'Domain\User'
<Commands>
REVERT
在您的情况下,第二个选项可能更可取,可以防止其他登录访问数据库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)