Permissão VIEW ANY DATABASE

Permissão para VIEW ANY DATABASE é uma nova permissão no nível de servidor. Um logon que recebe essa permissão pode ver os metadados que descrevem todos os bancos de dados, independentemente de o logon ser proprietário ou eventualmente usar um banco de dados específico.

A permissão do VIEW ANY DATABASE regulamenta a exposição de metadados nas exibições sys.databases e sys.sysdatabases e o procedimento armazenado do sistema de sp_helpdb.

Por padrão, a permissão VIEW ANY DATABASE é concedida à função public. Portanto, por padrão, todo usuário que se conecta a uma instância do SQL Server pode visualizar todos os bancos de dados na instância. Para verificar esse comportamento, execute a seguinte consulta:

SELECT l.name as grantee_name, p.state_desc, p.permission_name 
FROM sys.server_permissions AS p JOIN sys.server_principals AS l 
ON   p.grantee_principal_id = l.principal_id
WHERE permission_name = 'VIEW ANY DATABASE' ;
GO

Para conceder a permissão VIEW ANY DATABASE a um logon específico, execute a seguinte consulta:

GRANT VIEW ANY DATABASE TO <login>; 

Os metadados que descrevem os bancos de dados master e tempdb são sempre visíveis ao public.

Os membros da função fixa de servidor sysadmin sempre podem visualizar todos os metadados do banco de dados.

Os proprietários de banco de dados sempre podem visualizar linhas em sys.databases para os bancos de dados que possuem.

Conceder as permissões CREATE DATABASE e ALTER ANY DATABASE a um logon confere acesso aos metadados do banco de dados.

ObservaçãoObservação

A permissão CREATE DATABASE está implícita na função de servidor fixa dbcreator.

ObservaçãoObservação

Se você conceder as permissões CREATE DATABASE e ALTER ANY DATABASE a um logon e não negar VIEW ANY DATABASE ao logon, este poderá visualizar todas as linhas em sys.databases.

Para limitar a visibilidade aos metadados do banco de dados, não conceda ao logon a permissão VIEW ANY DATABASE. Depois que essa permissão é negada, um logon só pode visualizar os metadados de master, tempdb e os bancos de dados que o logon possui. Para obter mais informações, consulte Permissões de servidor DENY (Transact-SQL).