0

我是一名开发人员,希望我的 DBA 授予一组用户权限以在模式 [Rptg] 中执行存储过程并查看结果,但无法查看存储过程中的 t-sql 代码。他们将使用 Azure Data Studio 连接并执行存储过程。我们应该首先创建一个角色吗?

4

2 回答 2

2

你绝对应该使用角色。要确定角色成员无法查看 proc 的文本,您可以添加:

deny view permission on dbo.procx to role25;

拒绝对架构的许可

DENY VIEW DEFINITION ON SCHEMA::Products  to role25;
于 2019-03-06T20:34:50.867 回答
1

下面的示例授予角色对 Rptg 架构的执行权限。默认情况下,此角色的成员不会对这些存储过程具有 VIEW DEFINION 权限,正如@JeroenMostert 在评论中所指出的那样。

CREATE ROLE RptgSchemaProcExecutor;
GRANT EXECUTE ON SCHEMA::Rptg TO RptgSchemaProcExecutor;

这是一个示例验证脚本。

CREATE USER ExampleUser WITHOUT LOGIN;
ALTER ROLE RptgSchemaProcExecutor
    ADD  MEMBER ExampleUser;
GO
EXECUTE AS USER = 'ExampleUser';
GO
--this will err with "There is no text for object 'Rptg.ExampleProc'."
EXECUTE sp_helptext  'Rptg.ExampleProc';
GO
REVERT;
GO
于 2019-03-06T23:47:42.833 回答