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.