SQL Server a un HAS_DBACCESS() fonction qui renvoie des informations indiquant si l'utilisateur a accès à une base de données spécifiée.
Syntaxe
La syntaxe ressemble à ceci :
HAS_DBACCESS ( 'database_name' )
La fonction renvoie 1 si l'utilisateur a accès à la base de données, 0 si l'utilisateur n'a pas accès à la base de données, et NULL si le nom de la base de données n'est pas valide.
Il renvoie 0 si la base de données est hors ligne ou suspecte, et qu'elle renvoie 0 si la base de données est en mode mono-utilisateur et que la base de données est utilisée par un autre utilisateur.
Exemple
Voici un exemple pour illustrer :
SELECT HAS_DBACCESS('KrankyKranes'); Résultat :
1
Dans ce cas, 1 a été renvoyé, ce qui signifie que l'utilisateur a accès au KrankyKranes base de données.
Base de données inexistante
Si la base de données n'existe pas, le résultat est NULL :
SELECT HAS_DBACCESS('Oops'); Résultat :
NULL
Vérifier toutes les bases de données
Nous pouvons utiliser la requête suivante pour vérifier l'accès à toutes les bases de données de l'instance SQL Server :
SELECT
name AS DB,
HAS_DBACCESS(name) AS HasDBAccess
FROM sys.databases; Résultat :
+-----------------------+---------------+ | 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 | +-----------------------+---------------+
Dans ce cas, j'avais accès à toutes les bases de données.
Voici ce qui se passe lorsque j'exécute la requête en tant qu'utilisateur ayant accès à moins de bases de données :
SELECT
name AS DB,
HAS_DBACCESS(name) AS HasDBAccess
FROM sys.databases; Résultat :
+-----------------------+---------------+ | 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 | +-----------------------+---------------+