SQL Server hat einen HAS_DBACCESS()
Funktion, die Informationen darüber zurückgibt, ob der Benutzer Zugriff auf eine bestimmte Datenbank hat.
Syntax
Die Syntax lautet wie folgt:
HAS_DBACCESS ( 'database_name' )
Die Funktion gibt 1
zurück wenn der Benutzer Zugriff auf die Datenbank hat, 0
wenn der Benutzer keinen Zugriff auf die Datenbank hat, und NULL
wenn der Datenbankname nicht gültig ist.
Es gibt 0
zurück wenn die Datenbank offline oder verdächtig ist, und gibt 0
zurück wenn sich die Datenbank im Einzelbenutzermodus befindet und die Datenbank von einem anderen Benutzer verwendet wird.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung:
SELECT HAS_DBACCESS('KrankyKranes');
Ergebnis:
1
In diesem Fall 1
zurückgegeben, was bedeutet, dass der Benutzer Zugriff auf KrankyKranes
hat Datenbank.
Nicht vorhandene Datenbank
Wenn die Datenbank nicht existiert, ist das Ergebnis NULL
:
SELECT HAS_DBACCESS('Oops');
Ergebnis:
NULL
Alle Datenbanken prüfen
Wir können die folgende Abfrage verwenden, um den Zugriff auf alle Datenbanken in der SQL Server-Instanz zu überprüfen:
SELECT
name AS DB,
HAS_DBACCESS(name) AS HasDBAccess
FROM sys.databases;
Ergebnis:
+-----------------------+---------------+ | DB | HasDBAccess | |-----------------------+---------------| | master | 1 | | tempdb | 1 | | model | 1 | | msdb | 1 | | Music | 1 | | KrankyKranes | 1 | | Test | 1 | | WideWorldImporters | 1 | | World | 1 | | DomainDispute | 1 | | PetHotel | 1 | | StereoSystems | 1 | | NarrowNationExporters | 1 | +-----------------------+---------------+
In diesem Fall hatte ich Zugriff auf alle Datenbanken.
Folgendes passiert, wenn ich die Abfrage als Benutzer mit Zugriff auf weniger Datenbanken ausführe:
SELECT
name AS DB,
HAS_DBACCESS(name) AS HasDBAccess
FROM sys.databases;
Ergebnis:
+-----------------------+---------------+ | DB | HasDBAccess | |-----------------------+---------------| | master | 1 | | tempdb | 1 | | model | 0 | | msdb | 1 | | Music | 0 | | KrankyKranes | 0 | | Test | 1 | | WideWorldImporters | 0 | | World | 0 | | DomainDispute | 0 | | PetHotel | 0 | | StereoSystems | 0 | | NarrowNationExporters | 0 | +-----------------------+---------------+