查看但不执行存储过程及其代码需要什么级别的 SQL 服务器访问权限?

What level of SQL Server access is required to view, but not execute, stored procedures and their code?

我已被授予 db_datareader 访问我们的生产 SQL 服务器数据库的权限,但他们也授予我 denywrite 权限,作为确保我绝对不能破坏的安全预防措施我们在调查过程中提供的服务。

但是,我发现我看不到我们的存储过程 - 列表显示为空。

我们的生产环境中应该有数百个存储过程,所以我很困惑为什么它们没有出现在对象资源管理器中。

我们的基础架构经理授予我权限,但他对 SQL 服务器一无所知,因此管理层要求我协助确定我需要哪些 SQL 服务器权限,因为我是开发者。

所以我需要知道我在这里遗漏了什么 - 我假设 db_datareader 会让我查看所有内容,包括存储过程和元数据,但显然我错了。 :)

诚然,在权限方面我不是最了解的。但是,我相信您在这里需要的最低权限是 view definition。如果对您的情况更有意义,您也可以将此权限授予角色。

use MyDB
GO

GRANT VIEW DEFINITION to MyUser

以上将为 MyDB 数据库将 view_definition 授予 MyUser

更改为以下将在任何数据库上授予 view definition

use master
GO

GRANT VIEW ANY DEFINITION to MyUser

来源:

https://msdn.microsoft.com/en-us/library/ms345443.aspx#Security http://www.mssqltips.com/sqlservertip/1593/granting-view-definition-permission-to-a-user-or-role-in-sql-server/