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 | +-----------------------+---------------+