Autorizzazione VIEW ANY DATABASE

L'autorizzazione VIEW ANY DATABASE è una nuova autorizzazione a livello server. Un account di accesso dotato di questa autorizzazione è in grado di visualizzare i metadati che descrivono tutti i database, indipendentemente dal fatto che l'account possieda o possa effettivamente utilizzare un determinato database.

L'autorizzazione VIEW ANY DATABASE regola l'esposizione dei metadati nelle viste sys.databases e sys.sysdatabases e nella stored procedure di sistema sp_helpdb.

Per impostazione predefinita, l'autorizzazione VIEW ANY DATABASE viene concessa al ruolo public. Pertanto, per impostazione predefinita, ogni utente che si connette a un'istanza di SQL Server è in grado di visualizzare tutti i database nell'istanza. Per verificare questo comportamento, eseguire la query seguente:

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

Per concedere l'autorizzazione VIEW ANY DATABASE a un account di accesso specifico, eseguire la query seguente:

GRANT VIEW ANY DATABASE TO <login>; 

I metadati che descrivono i database master e tempdb sono sempre visibili a public.

I membri del ruolo predefinito del server sysadmin possono sempre visualizzare tutti i metadati del database.

I proprietari del database possono sempre visualizzare le righe in sys.databases per i database di loro proprietà.

La concessione delle autorizzazioni CREATE DATABASE e ALTER ANY DATABASE a un account di accesso consente di accedere ai metadati del database.

[!NOTA]

L'autorizzazione CREATE DATABASE è implicita nel ruolo predefinito del server dbcreator.

[!NOTA]

Se si concedono le autorizzazioni CREATE DATABASE e ALTER ANY DATABASE a un account di accesso senza negare l'autorizzazione VIEW ANY DATABASE, l'account di accesso potrà visualizzare tutte le righe in sys.databases.

Per limitare la visibilità dei metadati del database, negare a un account di accesso l'autorizzazione VIEW ANY DATABASE. Dopo che questa autorizzazione è stata negata, un account di accesso potrà visualizzare solo i metadati dei database master e tempdb e dei database di sua proprietà. Per ulteriori informazioni, vedere DENY - autorizzazioni per server (Transact-SQL).