gpt4 book ai didi

sql-server - 为什么没有内置 "stored procedure executor"数据库角色?

转载 作者:行者123 更新时间:2023-12-04 06:40:58 26 4
gpt4 key购买 nike

我一直想知道为什么数据库角色列表( db_datareaderdb_datawriterdb_ddladmin 等)从未包含 db_storedprocedureexecutor .其他人是有道理的,但似乎能够授予特定用户执行所有存储过程的能力(不授予他们 db_owner ,这是完成同一件事的唯一其他方法)将是一件方便的事情。

例如,假设我想授予我所有的开发人员运行存储过程的权限,同时不让他们执行任何 DDL - 无需在每个存储过程上明确授予 EXECUTE(然后记住在部署额外的 SP 时添加新的) , 没有办法做到这一点(我知道 SP 可以包含 DDL,所以他们可能仍然可以通过这种方式间接访问 DDL)。

如果我有一个应用程序服务帐户和许多与我的应用程序一起使用的存储过程,我必须向每个 SP 显式授予权限(因为我不想授予我的应用程序服务帐户 DBO),而我可以使用角色以允许他们更新/删除他们想要的任何内容。

虽然最初看起来很明显,但我现在不确定为什么数据库服务器中缺少这个角色 - 任何人都可以解释为什么这是一个糟糕的想法(我认为它是,或者它已经存在)?

编辑:

似乎我不是唯一一个有这种期望的人 - 和 it's worked around with a handful of T-SQL (似乎您可以授予一揽子 EXECUTE 权限,我不知道您可以这样做),这让我想知道为什么它不是标准的!

最佳答案

如果您使用模式,那么您只需 GRANT EXECUTE ON SCHEMA::storedprocschema
例如 CREATE PROC storedprocschema.DoStuff ...
至于为什么,不知道...

关于sql-server - 为什么没有内置 "stored procedure executor"数据库角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com