Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

T-SQL का उपयोग कर SQL सर्वर में किसी तालिका के लिए स्तंभ विशेषाधिकार प्राप्त करें:sp_column_privileges

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं एक SQL सर्वर VARBINARY कॉलम में बाइट [] कैसे सम्मिलित करूं?

  2. दिनांक में एक दिन जोड़ने के लिए दिनांक जोड़ें का उपयोग करते हुए SQL सर्वर 2005

  3. SQL सर्वर (T-SQL) में कॉलम का डेटा प्रकार प्राप्त करने के 3 तरीके

  4. उदाहरण के साथ SQL सर्वर इनर जॉइन बेसिक्स

  5. क्या चयन कथन में पिछली पंक्ति मान तक पहुंचने का कोई तरीका है?