SQL सर्वर में एक 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 सर्वर इंस्टेंस में सभी डेटाबेस तक पहुँच की जाँच करने के लिए हम निम्नलिखित क्वेरी का उपयोग कर सकते हैं:
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 | +-----------------------+---------------+