I SQL Server kan du bruge sp_column_privileges
systemlagret procedure for at returnere oplysninger om kolonneprivilegier for en given tabel i det aktuelle miljø.
Angiv tabelnavnet som et argument, når du udfører den lagrede procedure, og kolonnerettighederne vil blive returneret for den tabel. Du kan også angive tabelejeren, tabelkvalifikationen og/eller kolonnenavnet, hvis det kræves.
Syntaks
Syntaksen ser sådan ud:
sp_column_privileges [ @table_name = ] 'table_name' [ , [ @table_owner = ] 'table_owner' ] [ , [ @table_qualifier = ] 'table_qualifier' ] [ , [ @column_name = ] 'column' ]
@table_name
argument er det eneste nødvendige argument. Dette er navnet på den tabel, som du vil have kolonneprivilegier fra.
Eksempel 1 – Returneringsrettigheder for en specifik kolonne
Dette eksempel bruger alle mulige argumenter. Det returnerer privilegier for en specifik kolonne, i en specifik tabel, fra en specifik tabelejer, i en specifik database.
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 | +--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
Her er en mere kortfattet måde at gøre det på:
sp_column_privileges 'Cities', 'Application', 'WideWorldImporters', 'Location';
Det giver de samme resultater.
Eksempel 2 – Angiv kun en tabel
I dette eksempel skifter jeg til en anden database og angiver kun tabelnavnet.
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 | +-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
Dette returnerer privilegierne for alle kolonner i den angivne tabel.
Bemærk, at du skal være i den rigtige database. Hvis jeg kører det forrige eksempel igen på en anden database, får jeg ingen resultater.
USE WideWorldImporters; EXEC sp_column_privileges @table_name = 'Artists';
Resultat:
(0 rows affected)
Eksempel 3 – Om tabelkvalifikationen
Hvis du angiver @table_qualifier
argument, skal det være det samme som den aktuelle database. Hvis det ikke er det, vil du sandsynligvis få fejlmeddelelse 15250.
USE Music; EXEC sp_column_privileges @table_name = 'Artists', @table_qualifier = 'WideWorldImporters';
Resultater:
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.