VIEW ANY DATABASE-Berechtigung

Die VIEW ANY DATABASE-Berechtigung ist eine neue, auf der Serverebene erteilte Berechtigung. Ein Anmeldename, dem diese Berechtigung erteilt wird, kann Metadaten sehen, die alle Datenbanken beschreiben, und zwar unabhängig davon, ob der Anmeldename eine bestimmte Datenbank besitzt oder tatsächlich verwenden kann.

Mit der VIEW ANY DATABASE-Berechtigung wird die Offenlegung von Metadaten in den sys.databases- und sys.sysdatabases-Sichten sowie in der gespeicherten Systemprozedur sp_helpdb gesteuert.

Standardmäßig wird die VIEW ANY DATABASE-Berechtigung der public-Rolle erteilt. Daher kann standardmäßig jeder Benutzer, der eine Verbindung mit einer Instanz von SQL Server herstellt, alle Datenbanken in der Instanz anzeigen. Führen Sie die folgende Abfrage aus, um dieses Verhalten zu überprüfen:

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

Um die VIEW ANY DATABASE-Berechtigung einem bestimmten Anmeldenamen zu erteilen, führen Sie die folgende Abfrage aus:

GRANT VIEW ANY DATABASE TO <login>; 

Die Metadaten, die die Datenbanken master und tempdb beschreiben, sind für public-Datenbanken immer sichtbar.

Mitglieder der festen sysadmin-Serverrolle können immer sämtliche Datenbankmetadaten sehen.

Datenbankbesitzer können immer die Zeilen in sys.databases für die Datenbanken sehen, deren Besitzer sie sind.

Wenn einem Anmeldenamen die Berechtigungen CREATE DATABASE und ALTER ANY DATABASE erteilt werden, erhält dieser Anmeldename Zugriff auf die Datenbankmetadaten.

HinweisHinweis

Die CREATE DATABASE-Berechtigung gilt implizit für die feste dbcreator-Serverrolle.

HinweisHinweis

Wenn Sie die Berechtigungen CREATE DATABASE und ALTER ANY DATABASE einem Anmeldenamen erteilen und diesem Anmeldenamen die Berechtigung VIEW ANY DATABASE nicht verweigern, dann können mit diesem Anmeldenamen alle Zeilen in sys.databases angezeigt werden.

Um die Sichtbarkeit auf Datenbankmetadaten einzuschränken, verweigern Sie einem Anmeldenamen die VIEW ANY DATABASE-Berechtigung. Nachdem diese Berechtigung verweigert wurde, können mit einem Anmeldenamen nur die Metadaten für die Datenbanken master und tempdb sowie für die Datenbanken angezeigt werden, die der Anmeldename besitzt. Weitere Informationen finden Sie unter DENY (Serverberechtigungen) (Transact-SQL).