Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

HAS_DBACCESS() – Temukan apakah Pengguna Dapat Mengakses Database di SQL Server

SQL Server memiliki HAS_DBACCESS() fungsi yang mengembalikan informasi tentang apakah pengguna memiliki akses ke database tertentu.

Sintaks

Sintaksnya seperti ini:

HAS_DBACCESS ( 'database_name' )

Fungsi mengembalikan 1 jika pengguna memiliki akses ke database, 0 jika pengguna tidak memiliki akses ke database, dan NULL jika nama database tidak valid.

Ini mengembalikan 0 jika database offline atau dicurigai, dan mengembalikan 0 jika database dalam mode single-user dan database sedang digunakan oleh pengguna lain.

Contoh

Berikut ini contoh untuk didemonstrasikan:

SELECT HAS_DBACCESS('KrankyKranes');

Hasil:

1

Dalam hal ini, 1 dikembalikan, yang berarti bahwa pengguna memiliki akses ke KrankyKranes basis data.

Basis Data Tidak Ada

Jika database tidak ada, hasilnya adalah NULL :

SELECT HAS_DBACCESS('Oops');

Hasil:

NULL

Periksa Semua Basis Data

Kita dapat menggunakan query berikut untuk memeriksa akses ke semua database dalam contoh SQL Server:

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

Hasil:

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

Dalam hal ini, saya memiliki akses ke semua database.

Inilah yang terjadi ketika saya menjalankan kueri sebagai pengguna dengan akses ke lebih sedikit database:

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

Hasil:

+-----------------------+---------------+
| 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. Gunakan NEWSEQUENTIALID() untuk Membuat GUID yang Bertambah di SQL Server

  2. Memperkenalkan Platform SaaS Pertama di Dunia untuk Memberikan Diagnostik Mendalam untuk Lingkungan SQL Server Hibrida

  3. Cara Menghentikan/Memulai Antrian Surat Database di SQL Server (T-SQL)

  4. INFORMATION_SCHEMA vs sysobjects

  5. Pengidentifikasi multi-bagian tidak dapat diikat