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