SQL सर्वर में आप sp_column_privileges
. का उपयोग कर सकते हैं वर्तमान परिवेश में किसी तालिका के लिए स्तंभ विशेषाधिकार जानकारी वापस करने के लिए सिस्टम संग्रहीत कार्यविधि।
संग्रहीत प्रक्रिया को निष्पादित करते समय तालिका नाम को तर्क के रूप में प्रदान करें, और उस तालिका के लिए कॉलम विशेषाधिकार वापस कर दिए जाएंगे। यदि आवश्यक हो तो आप टेबल के मालिक, टेबल क्वालीफायर और/या कॉलम नाम भी दे सकते हैं।
सिंटैक्स
वाक्य रचना इस प्रकार है:
sp_column_privileges [ @table_name = ] 'table_name' [ , [ @table_owner = ] 'table_owner' ] [ , [ @table_qualifier = ] 'table_qualifier' ] [ , [ @column_name = ] 'column' ]
@table_name
तर्क ही आवश्यक तर्क है। यह उस तालिका का नाम है जिससे आप स्तंभ विशेषाधिकार चाहते हैं।
उदाहरण 1 - किसी विशिष्ट कॉलम के लिए विशेषाधिकार लौटाएं
यह उदाहरण सभी संभावित तर्कों का उपयोग करता है। यह किसी विशिष्ट तालिका में, विशिष्ट तालिका के स्वामी से, विशिष्ट डेटाबेस में, विशिष्ट स्तंभ के लिए विशेषाधिकार लौटाता है।
EXEC sp_column_privileges @table_name = 'Cities', @table_owner = 'Application', @table_qualifier = 'WideWorldImporters', @column_name = 'Location';
परिणाम:
+--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | COLUMN_NAME | GRANTOR | GRANTEE | PRIVILEGE | IS_GRANTABLE | |--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------| | WideWorldImporters | Application | Cities | Location | dbo | dbo | INSERT | YES | | WideWorldImporters | Application | Cities | Location | dbo | dbo | REFERENCES | YES | | WideWorldImporters | Application | Cities | Location | dbo | dbo | SELECT | YES | | WideWorldImporters | Application | Cities | Location | dbo | dbo | UPDATE | YES | +--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
इसे करने का एक और संक्षिप्त तरीका यहां दिया गया है:
sp_column_privileges 'Cities', 'Application', 'WideWorldImporters', 'Location';
यह वही परिणाम देता है।
उदाहरण 2 - केवल एक तालिका निर्दिष्ट करें
इस उदाहरण में मैं दूसरे डेटाबेस पर स्विच करता हूं और केवल तालिका का नाम निर्दिष्ट करता हूं।
USE Music; EXEC sp_column_privileges @table_name = 'Artists';
परिणाम:
+-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | COLUMN_NAME | GRANTOR | GRANTEE | PRIVILEGE | IS_GRANTABLE | |-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------| | Music | dbo | Artists | ActiveFrom | dbo | dbo | INSERT | YES | | Music | dbo | Artists | ActiveFrom | dbo | dbo | REFERENCES | YES | | Music | dbo | Artists | ActiveFrom | dbo | dbo | SELECT | YES | | Music | dbo | Artists | ActiveFrom | dbo | dbo | UPDATE | YES | | Music | dbo | Artists | ArtistId | dbo | dbo | INSERT | YES | | Music | dbo | Artists | ArtistId | dbo | dbo | REFERENCES | YES | | Music | dbo | Artists | ArtistId | dbo | dbo | SELECT | YES | | Music | dbo | Artists | ArtistId | dbo | dbo | UPDATE | YES | | Music | dbo | Artists | ArtistName | dbo | dbo | INSERT | YES | | Music | dbo | Artists | ArtistName | dbo | dbo | REFERENCES | YES | | Music | dbo | Artists | ArtistName | dbo | dbo | SELECT | YES | | Music | dbo | Artists | ArtistName | dbo | dbo | UPDATE | YES | +-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
यह निर्दिष्ट तालिका में सभी स्तंभों के लिए विशेषाधिकार देता है।
ध्यान दें कि आपको सही डेटाबेस में होने की आवश्यकता है। अगर मैं पिछले उदाहरण को किसी भिन्न डेटाबेस पर फिर से चलाता हूं, तो मुझे कोई परिणाम नहीं मिलता है।
USE WideWorldImporters; EXEC sp_column_privileges @table_name = 'Artists';
परिणाम:
(0 rows affected)
उदाहरण 3 - टेबल क्वालिफायर के बारे में
यदि आप @table_qualifier
प्रदान करते हैं तर्क, यह वर्तमान डेटाबेस के समान होना चाहिए। यदि ऐसा नहीं है, तो संभवतः आपको त्रुटि संदेश 15250 मिलेगा।
USE Music; EXEC sp_column_privileges @table_name = 'Artists', @table_qualifier = 'WideWorldImporters';
परिणाम:
Msg 15250, Level 16, State 1, Procedure sp_column_privileges, Line 19 The database name component of the object qualifier must be the name of the current database.