W SQL Server możesz użyć sp_column_privileges
systemowa procedura składowana do zwracania informacji o uprawnieniach kolumn dla danej tabeli w bieżącym środowisku.
Podaj nazwę tabeli jako argument podczas wykonywania procedury składowanej, a zostaną zwrócone uprawnienia do kolumny dla tej tabeli. Możesz również podać właściciela tabeli, kwalifikator tabeli i/lub nazwę kolumny, jeśli jest to wymagane.
Składnia
Składnia wygląda tak:
sp_column_privileges [ @table_name = ] 'table_name' [ , [ @table_owner = ] 'table_owner' ] [ , [ @table_qualifier = ] 'table_qualifier' ] [ , [ @column_name = ] 'column' ]
@table_name
argument jest jedynym wymaganym argumentem. To jest nazwa tabeli, z której chcesz uzyskać uprawnienia do kolumny.
Przykład 1 – Uprawnienia zwrotu dla określonej kolumny
W tym przykładzie zastosowano wszystkie możliwe argumenty. Zwraca uprawnienia do określonej kolumny, w określonej tabeli, od określonego właściciela tabeli, w określonej bazie danych.
EXEC sp_column_privileges @table_name = 'Cities', @table_owner = 'Application', @table_qualifier = 'WideWorldImporters', @column_name = 'Location';
Wynik:
+--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+ | 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 | +--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
Oto bardziej zwięzły sposób na zrobienie tego:
sp_column_privileges 'Cities', 'Application', 'WideWorldImporters', 'Location';
To zwraca te same wyniki.
Przykład 2 – Określ tylko tabelę
W tym przykładzie przełączam się na inną bazę danych i podaję tylko nazwę tabeli.
USE Music; EXEC sp_column_privileges @table_name = 'Artists';
Wynik:
+-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+ | 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 | +-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
Zwraca to uprawnienia dla wszystkich kolumn w określonej tabeli.
Pamiętaj, że musisz znajdować się we właściwej bazie danych. Jeśli ponownie uruchomię poprzedni przykład w innej bazie danych, nie otrzymam żadnych wyników.
USE WideWorldImporters; EXEC sp_column_privileges @table_name = 'Artists';
Wynik:
(0 rows affected)
Przykład 3 – Informacje o kwalifikatorze stołu
Jeśli podasz @table_qualifier
argument, musi być taki sam jak bieżąca baza danych. Jeśli tak nie jest, prawdopodobnie otrzymasz komunikat o błędzie 15250.
USE Music; EXEC sp_column_privileges @table_name = 'Artists', @table_qualifier = 'WideWorldImporters';
Wyniki:
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.