I SQL Server kan du använda sp_column_privileges
systemlagrad procedur för att returnera kolumnbehörighetsinformation för en given tabell i den aktuella miljön.
Ange tabellnamnet som ett argument när du kör den lagrade proceduren, så kommer kolumnbehörigheterna att returneras för den tabellen. Du kan också ange tabellägaren, tabellkvalificeraren och/eller kolumnnamnet om det behövs.
Syntax
Syntaxen ser ut så här:
sp_column_privileges [ @table_name = ] 'table_name' [ , [ @table_owner = ] 'table_owner' ] [ , [ @table_qualifier = ] 'table_qualifier' ] [ , [ @column_name = ] 'column' ]
@table_name
argument är det enda nödvändiga argumentet. Det här är namnet på tabellen som du vill ha kolumnbehörighet från.
Exempel 1 – Returrättigheter för en specifik kolumn
Detta exempel använder alla möjliga argument. Den returnerar privilegier för en specifik kolumn, i en specifik tabell, från en specifik tabellägare, i en specifik databas.
EXEC sp_column_privileges @table_name = 'Cities', @table_owner = 'Application', @table_qualifier = 'WideWorldImporters', @column_name = 'Location';
Resultat:
+--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+ | 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 | +--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
Här är ett mer kortfattat sätt att göra det:
sp_column_privileges 'Cities', 'Application', 'WideWorldImporters', 'Location';
Det ger samma resultat.
Exempel 2 – Ange endast en tabell
I det här exemplet byter jag till en annan databas och anger bara tabellnamnet.
USE Music; EXEC sp_column_privileges @table_name = 'Artists';
Resultat:
+-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+ | 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 | +-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
Detta returnerar privilegierna för alla kolumner i den angivna tabellen.
Observera att du måste finnas i rätt databas. Om jag kör om det föregående exemplet på en annan databas får jag inga resultat.
USE WideWorldImporters; EXEC sp_column_privileges @table_name = 'Artists';
Resultat:
(0 rows affected)
Exempel 3 – Om tabellkvalificeringen
Om du anger @table_qualifier
argument, måste det vara samma som den aktuella databasen. Om det inte är det kommer du förmodligen att få felmeddelande 15250.
USE Music; EXEC sp_column_privileges @table_name = 'Artists', @table_qualifier = 'WideWorldImporters';
Resultat:
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.