SQL सर्वर में आप sp_table_privileges_ex
. का उपयोग कर सकते हैं निर्दिष्ट लिंक किए गए सर्वर से निर्दिष्ट तालिका के बारे में विशेषाधिकार जानकारी वापस करने के लिए सिस्टम संग्रहीत प्रक्रिया।
आप एक व्यक्तिगत तालिका निर्दिष्ट कर सकते हैं, या आप किसी दिए गए डेटाबेस या तालिका स्कीमा से सभी तालिकाओं को निर्दिष्ट कर सकते हैं। आप टेबल/एस निर्दिष्ट करने के लिए वाइल्डकार्ड वर्णों का भी उपयोग कर सकते हैं। हालांकि, आप यह भी निर्दिष्ट कर सकते हैं कि वाइल्डकार्ड वर्णों की व्याख्या वाइल्डकार्ड वर्णों के रूप में की जानी चाहिए या नहीं।
सिंटैक्स
वाक्य रचना इस प्रकार है:
sp_table_privileges_ex [ @table_server = ] 'table_server' [ , [ @table_name = ] 'table_name' ] [ , [ @table_schema = ] 'table_schema' ] [ , [ @table_catalog = ] 'table_catalog' ] [ , [@fUsePattern =] 'fUsePattern']
@table_server
तर्क ही आवश्यक तर्क है। यह लिंक किए गए सर्वर का नाम है जिससे आप तालिका की जानकारी चाहते हैं।
अन्य तर्क वैकल्पिक हैं, और उन्हें निम्नलिखित उदाहरणों में प्रदर्शित किया गया है।
उदाहरण 1 - किसी विशिष्ट तालिका के लिए विशेषाधिकार लौटाएं
यह उदाहरण किसी विशिष्ट तालिका में, विशिष्ट तालिका स्कीमा से, विशिष्ट डेटाबेस में विशिष्ट कॉलम के लिए विशेषाधिकार लौटाता है।
EXEC sp_table_privileges_ex @table_server = 'Homer', @table_name = 'City', @table_schema = 'Dimension', @table_catalog = 'WideWorldImportersDW';
परिणाम:
+----------------------+---------------+--------------+-----------+-----------+-------------+----------------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | GRANTOR | GRANTEE | PRIVILEGE | IS_GRANTABLE | |----------------------+---------------+--------------+-----------+-----------+-------------+----------------| | WideWorldImportersDW | Dimension | City | dbo | dbo | DELETE | YES | | WideWorldImportersDW | Dimension | City | dbo | dbo | INSERT | YES | | WideWorldImportersDW | Dimension | City | dbo | dbo | REFERENCES | YES | | WideWorldImportersDW | Dimension | City | dbo | dbo | SELECT | YES | | WideWorldImportersDW | Dimension | City | dbo | dbo | UPDATE | YES | +----------------------+---------------+--------------+-----------+-----------+-------------+----------------+
इसे इस तरह भी क्रियान्वित किया जा सकता है:
EXEC sp_table_privileges_ex 'Homer', 'City', 'Dimension', 'WideWorldImportersDW';
उदाहरण 2 - डिफ़ॉल्ट डेटाबेस का उपयोग करना
अगर आप @table_catalog
प्रदान नहीं करते हैं तर्क (डेटाबेस निर्दिष्ट करने के लिए), लिंक किए गए सर्वर के लिए डिफ़ॉल्ट डेटाबेस का उपयोग किया जाएगा।
अगर मैं @table_catalog
हटा दूं पिछले उदाहरण से तर्क:
EXEC sp_table_privileges_ex @table_server = 'Homer', @table_name = 'City', @table_schema = 'Dimension';
मुझे निम्नलिखित परिणाम मिलते हैं:
(0 rows affected) Time: 0.311s
ऐसा इसलिए है क्योंकि WideWorldImportersDW
डेटाबेस लिंक किए गए सर्वर के लिए डिफ़ॉल्ट डेटाबेस नहीं है। इस मामले में, जब मैंने लिंक्ड सर्वर बनाया, तो मैंने @catalog = 'Music'
का उपयोग किया यह निर्दिष्ट करने के लिए कि संगीत नामक डेटाबेस इस लिंक किए गए सर्वर के लिए डिफ़ॉल्ट डेटाबेस होगा।
इसलिए यदि मैं एक कॉलम निर्दिष्ट करता हूं जो डिफ़ॉल्ट डेटाबेस में होता है, तो मुझे परिणाम मिलेंगे:
EXEC sp_table_privileges_ex @table_server = 'Homer', @table_name = 'Artists';
मुझे निम्नलिखित परिणाम मिलते हैं:
+-------------+---------------+--------------+-----------+-----------+-------------+----------------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | GRANTOR | GRANTEE | PRIVILEGE | IS_GRANTABLE | |-------------+---------------+--------------+-----------+-----------+-------------+----------------| | Music | dbo | Artists | dbo | dbo | DELETE | YES | | Music | dbo | Artists | dbo | dbo | INSERT | YES | | Music | dbo | Artists | dbo | dbo | REFERENCES | YES | | Music | dbo | Artists | dbo | dbo | SELECT | YES | | Music | dbo | Artists | dbo | dbo | UPDATE | YES | +-------------+---------------+--------------+-----------+-----------+-------------+----------------+
ध्यान दें कि मैंने इस उदाहरण में टेबल स्कीमा निर्दिष्ट नहीं किया है, क्योंकि यह वैकल्पिक है।
उदाहरण 3 - केवल तालिका स्कीमा नाम निर्दिष्ट करें
इस उदाहरण में मैं केवल स्कीमा नाम निर्दिष्ट करता हूं (सर्वर भी, जाहिर है)।
EXEC sp_table_privileges_ex @table_server = 'Homer', @table_schema = 'dbo';
यह मेरे सिस्टम पर 35 पंक्तियां देता है। इसमें 4 टेबल और 3 व्यू शामिल हैं।
उदाहरण 4 - केवल लिंक किए गए सर्वर को निर्दिष्ट करें (कोई अन्य तर्क नहीं)
यहां मैं केवल लिंक किए गए सर्वर को निर्दिष्ट करता हूं - मैं कोई अन्य तर्क प्रदान नहीं करता। इस मामले में, यह डेटाबेस में सभी स्तंभों के लिए सभी विशेषाधिकार लौटाएगा:
EXEC sp_table_privileges_ex @table_server = 'Homer';
मैं यहां परिणाम प्रदर्शित नहीं करूंगा क्योंकि यह 3,000 से अधिक पंक्तियों में लौटा है। इनमें से अधिकांश sys
. के थे टेबल स्कीमा।
उदाहरण 5 - वाइल्डकार्ड वर्ण
आप वाइल्डकार्ड वर्णों का भी उपयोग कर सकते हैं। यहां %
. का उपयोग करने का एक उदाहरण दिया गया है वाइल्डकार्ड वर्ण:
EXEC sp_table_privileges_ex @table_server = 'Homer', @table_name = 'Ar%';
परिणाम:
+-------------+---------------+--------------+-----------+-----------+-------------+----------------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | GRANTOR | GRANTEE | PRIVILEGE | IS_GRANTABLE | |-------------+---------------+--------------+-----------+-----------+-------------+----------------| | Music | dbo | Artists | dbo | dbo | DELETE | YES | | Music | dbo | Artists | dbo | dbo | INSERT | YES | | Music | dbo | Artists | dbo | dbo | REFERENCES | YES | | Music | dbo | Artists | dbo | dbo | SELECT | YES | | Music | dbo | Artists | dbo | dbo | UPDATE | YES | +-------------+---------------+--------------+-----------+-----------+-------------+----------------+
यह Ar
. से शुरू होने वाली सभी तालिकाओं के लिए विशेषाधिकार देता है .
हालांकि, आप @fUsePattern
. का भी उपयोग कर सकते हैं यह निर्धारित करने के लिए तर्क कि वाइल्डकार्ड वर्णों की व्याख्या वाइल्डकार्ड वर्णों के रूप में की जानी चाहिए या नहीं। डिफ़ॉल्ट मान 1
है , जिसका अर्थ है कि उन्हें वाइल्डकार्ड वर्णों के रूप में व्याख्यायित किया जाना चाहिए। 0
. का मान निर्दिष्ट करता है कि उनकी व्याख्या वाइल्डकार्ड वर्णों के रूप में नहीं की जानी चाहिए।
अगर मैं @fUsePattern = 0
. जोड़ दूं तो यहां क्या होगा पिछले उदाहरण के लिए:
EXEC sp_table_privileges_ex @table_server = 'Homer', @table_name = 'Ar%', @fUsePattern = 0;
परिणाम:
(0 rows affected) Time: 0.318s
और अगर मैं इसे 1
. पर सेट कर दूं तो क्या होगा :
EXEC sp_table_privileges_ex @table_server = 'Homer', @table_name = 'Ar%', @fUsePattern = 1;
परिणाम:
+-------------+---------------+--------------+-----------+-----------+-------------+----------------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | GRANTOR | GRANTEE | PRIVILEGE | IS_GRANTABLE | |-------------+---------------+--------------+-----------+-----------+-------------+----------------| | Music | dbo | Artists | dbo | dbo | DELETE | YES | | Music | dbo | Artists | dbo | dbo | INSERT | YES | | Music | dbo | Artists | dbo | dbo | REFERENCES | YES | | Music | dbo | Artists | dbo | dbo | SELECT | YES | | Music | dbo | Artists | dbo | dbo | UPDATE | YES | +-------------+---------------+--------------+-----------+-----------+-------------+----------------+