Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

HAS_DBACCESS() – Открийте дали потребителят има достъп до база данни в SQL Server

SQL Server има HAS_DBACCESS() функция, която връща информация за това дали потребителят има достъп до определена база данни.

Синтаксис

Синтаксисът е така:

HAS_DBACCESS ( 'database_name' )

Функцията връща 1 ако потребителят има достъп до базата данни, 0 ако потребителят няма достъп до базата данни, и NULL ако името на базата данни не е валидно.

Връща 0 ако базата данни е офлайн или подозрителна и връща 0 ако базата данни е в режим на един потребител и базата данни се използва от друг потребител.

Пример

Ето пример за демонстрация:

SELECT HAS_DBACCESS('KrankyKranes');

Резултат:

1

В този случай 1 беше върнат, което означава, че потребителят има достъп до KrankyKranes база данни.

Несъществуваща база данни

Ако базата данни не съществува, резултатът е NULL :

SELECT HAS_DBACCESS('Oops');

Резултат:

NULL

Проверете всички бази данни

Можем да използваме следната заявка, за да проверим достъпа до всички бази данни в екземпляра на SQL Server:

SELECT 
    name AS DB,
    HAS_DBACCESS(name) AS HasDBAccess
FROM sys.databases;

Резултат:

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

В този случай имах достъп до всички бази данни.

Ето какво се случва, когато стартирам заявката като потребител с достъп до по-малко бази данни:

SELECT 
    name AS DB,
    HAS_DBACCESS(name) AS HasDBAccess
FROM sys.databases;

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкнете данни в SQL Server

  2. СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА, еквивалент в SQL Server

  3. Начини за възстановяване на данни от регистрационния файл на транзакциите на SQL Server

  4. Разбиране на анализатора на работното натоварване за картографиране на тесните места в производителността

  5. Намерете, приоритизирайте и разрешите проблеми със SQL сървъра за минути