当前位置: 首页 > 面试题库 >

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

杜曜灿
2023-03-14
问题内容

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

我们的供应商之一对其应用进行了硬编码,以使用本地db帐户执行某些过程以导入某些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

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



 类似资料:
  • 问题内容: 我主要是oracle新手,所以如果这是一个愚蠢的问题,请原谅我… 我有一个名为“ CODE”的架构,该架构具有一个执行任意SQL的存储proc(目前,请忽略与此相关的潜在安全问题)。传入的SQL将选择数据;但是所有数据都驻留在架构A,B或C中- 但是SQL一次只能选择一个架构。 例如:类型A的用户创建字符串’SELECT * FROM A.USERTABLE’-类型B的用户创建字符串’

  • 问题内容: 如何检查用户是否可以在MS SQL Server中执行存储过程? 我可以通过连接到master数据库并执行以下命令来查看用户是否具有显式执行权限: 但是,如果用户是具有执行权限的角色的成员,则sp_helprotect不会帮助我。 理想情况下,我希望能够打电话给类似 这将返回布尔值。 问题答案: 和

  • 问题内容: 我在本地主机上运行Apache。通过以www- user用户身份运行的PHP脚本,我想控制我的机器上Rhythmbox的播放。到目前为止,我的PHP脚本中有一个简单的命令: 当我像我一样从命令行运行它时,它的效果很好,但是如果它以www-user身份运行,我想不知道/无法访问我的Rhythmbox实例。 有没有一种简单的方法可以让该PHP脚本以我的用户而不是www-user的身份运行,

  • 问题内容: 我有以下工作代码可通过本地护照策略进行身份验证: 但是,理想情况下,我想从一条快速路径处理错误和成功消息,而不是重定向到两条额外的路径。 这可能吗?我尝试使用“自定义回调”,但由于某种原因似乎在序列化用户时出错。 问题答案: 您可以使用自定义回调,例如: 在err对象中,您可以找到所有必需的错误,这些错误在身份验证时出现。

  • 在Hadoop中保存数据并使用Spark/Hive等使用数据是否可靠? 使用HDFS作为主存储的优势是什么?

  • 问题内容: 我正在编写一个初始化脚本,该脚本应该以与root用户不同的用户身份执行单个命令。这是我目前正在做的事情: 通常,这在Ubuntu / Debian上可以正常工作,但是在RHEL上,该脚本以挂起方式执行。 还有另一种以其他用户身份运行命令的方法吗? (请注意,我不能使用lsb初始化函数,因为它们在RHEL / Centos 5.x中不可用。) 问题答案: 在RHEL系统上,该脚本旨在提供