Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj uprawnienia do kolumn dla tabeli w SQL Server przy użyciu T-SQL:sp_column_privileges

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kopia zapasowa/przywracanie serwera SQL Server a odłączanie/dołączanie

  2. Utwórz tabelę w SQL Server (T-SQL)

  3. Jak działa funkcja STR() w SQL Server (T-SQL)

  4. Jaka jest różnica między Scope_Identity(), Identity(), @@Identity i Ident_Current()?

  5. Importuj kolumny arkusza kalkulacyjnego Excel do bazy danych SQL Server