SQL Server có HAS_DBACCESS()
hàm trả về thông tin về việc người dùng có quyền truy cập vào cơ sở dữ liệu được chỉ định hay không.
Cú pháp
Cú pháp như sau:
HAS_DBACCESS ( 'database_name' )
Hàm trả về 1
nếu người dùng có quyền truy cập vào cơ sở dữ liệu, 0
nếu người dùng không có quyền truy cập vào cơ sở dữ liệu và NULL
nếu tên cơ sở dữ liệu không hợp lệ.
Nó trả về 0
nếu cơ sở dữ liệu ngoại tuyến hoặc nghi ngờ và nó trả về 0
nếu cơ sở dữ liệu ở chế độ một người dùng và cơ sở dữ liệu đang được người dùng khác sử dụng.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT HAS_DBACCESS('KrankyKranes');
Kết quả:
1
Trong trường hợp này, 1
đã được trả lại, có nghĩa là người dùng có quyền truy cập vào KrankyKranes
cơ sở dữ liệu.
Cơ sở dữ liệu không tồn tại
Nếu cơ sở dữ liệu không tồn tại, kết quả là NULL
:
SELECT HAS_DBACCESS('Oops');
Kết quả:
NULL
Kiểm tra tất cả cơ sở dữ liệu
Chúng tôi có thể sử dụng truy vấn sau để kiểm tra quyền truy cập vào tất cả cơ sở dữ liệu trong phiên bản SQL Server:
SELECT
name AS DB,
HAS_DBACCESS(name) AS HasDBAccess
FROM sys.databases;
Kết quả:
+-----------------------+---------------+ | 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 | +-----------------------+---------------+
Trong trường hợp đó, tôi có quyền truy cập vào tất cả cơ sở dữ liệu.
Đây là những gì sẽ xảy ra khi tôi chạy truy vấn với tư cách là người dùng có quyền truy cập vào ít cơ sở dữ liệu hơn:
SELECT
name AS DB,
HAS_DBACCESS(name) AS HasDBAccess
FROM sys.databases;
Kết quả:
+-----------------------+---------------+ | 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 | +-----------------------+---------------+