sql >> Databáze >  >> RDS >> Sqlserver

Získejte oprávnění sloupců pro tabulku v SQL Server pomocí T-SQL:sp_column_privileges

V SQL Server můžete použít sp_column_privileges systémová uložená procedura pro vrácení informací o oprávněních sloupců pro danou tabulku v aktuálním prostředí.

Zadejte název tabulky jako argument při provádění uložené procedury a pro tuto tabulku budou vrácena oprávnění sloupců. V případě potřeby můžete také zadat vlastníka tabulky, kvalifikátor tabulky a/nebo název sloupce.

Syntaxe

Syntaxe vypadá takto:

sp_column_privileges [ @table_name = ] 'table_name'   
     [ , [ @table_owner = ] 'table_owner' ]   
     [ , [ @table_qualifier = ] 'table_qualifier' ]   
     [ , [ @column_name = ] 'column' ]

@table_name argument je jediný požadovaný argument. Toto je název tabulky, od které chcete získat oprávnění ke sloupcům.

Příklad 1 – Návratová oprávnění pro konkrétní sloupec

Tento příklad používá všechny možné argumenty. Vrací oprávnění pro konkrétní sloupec, v konkrétní tabulce, od konkrétního vlastníka tabulky, v konkrétní databázi.

EXEC sp_column_privileges 
  @table_name = 'Cities', 
  @table_owner = 'Application',   
  @table_qualifier = 'WideWorldImporters',   
  @column_name = 'Location';

Výsledek:

+--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
| 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            |
+--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+

Zde je stručnější způsob, jak to udělat:

sp_column_privileges 
  'Cities', 
  'Application',   
  'WideWorldImporters',   
  'Location';

To vrátí stejné výsledky.

Příklad 2 – Určení pouze tabulky

V tomto příkladu přepnu do jiné databáze a zadávám pouze název tabulky.

USE Music;
EXEC sp_column_privileges
  @table_name = 'Artists';

Výsledek:

+-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
| 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            |
+-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+

Tím se vrátí oprávnění pro všechny sloupce v zadané tabulce.

Všimněte si, že musíte být ve správné databázi. Pokud znovu spustím předchozí příklad na jiné databázi, nedostanu žádné výsledky.

USE WideWorldImporters;
EXEC sp_column_privileges
  @table_name = 'Artists';

Výsledek:

(0 rows affected)

Příklad 3 – O kvalifikátoru tabulky

Pokud zadáte @table_qualifier argument, musí být stejný jako aktuální databáze. Pokud tomu tak není, pravděpodobně se zobrazí chybová zpráva 15250.

USE Music;
EXEC sp_column_privileges
  @table_name = 'Artists',
  @table_qualifier = 'WideWorldImporters';

Výsledky:

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. PHP MySQL Google Chart JSON – úplný příklad

  2. Jak migrovat databáze a datové soubory

  3. SQL – Převod datového typu varchar na datový typ datetime vedl k hodnotě mimo rozsah

  4. Vrátit dotaz z funkce?