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

Gif*_*guy 2 sql-server permissions stored-procedures metadata

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

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

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

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

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

Dan*_*Dan 5

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

use MyDB
GO

GRANT VIEW DEFINITION to MyUser
Run Code Online (Sandbox Code Playgroud)

以上将授予view_definition到MyUserMyDB数据库。

更改为以下内容将授予view definition任何数据库:

use master
GO

GRANT VIEW ANY DEFINITION to MyUser
Run Code Online (Sandbox Code Playgroud)

资料来源:

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