Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Получете привилегии на колона за таблица в SQL Server с помощта на T-SQL:sp_column_privileges

В SQL Server можете да използвате sp_column_privileges системна съхранена процедура за връщане на информация за привилегии на колона за дадена таблица в текущата среда.

Предоставете името на таблицата като аргумент при изпълнение на съхранената процедура и привилегиите на колоната ще бъдат върнати за тази таблица. Можете също да посочите собственика на таблицата, квалификатора на таблицата и/или името на колоната, ако е необходимо.

Синтаксис

Синтаксисът е така:

sp_column_privileges [ @table_name =] 'table_name' [ , [ @table_owner =] 'table_owner' ] [ , [ @table_qualifier =] 'table_qualifier' ] [ , [ @column_name =] 'колона' ] 

@table_name аргументът е единственият задължителен аргумент. Това е името на таблицата, от която искате привилегиите на колоните.

Пример 1 – връщане на привилегии за конкретна колона

Този пример използва всички възможни аргументи. Той връща привилегии за конкретна колона, в конкретна таблица, от конкретен собственик на таблица, в конкретна база данни.

EXEC sp_column_privileges @table_name ='Градове', @table_owner ='Приложение', @table_qualifier ='WideWorldImporters', @column_name ='Местоположение';

Резултат:

+--------------------+--------------+-------- -----+--------------+-----------+----------+----- ---------+----------------+| TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | COLUMN_NAME | КОНДЕНТЪТ | ПОЛУЧАВАТЕЛ | ПРИВИЛЕГИЯ | МОЖЕ ДА СЕ ||-------------------+--------------+---------- ----+--------------+-----------+-----------+----- --------+----------------|| WideWorldImporters | Приложение | Градове | Местоположение | dbo | dbo | ВМЕСТЕ | ДА || WideWorldImporters | Приложение | Градове | Местоположение | dbo | dbo | ЛИТЕРАТУРА | ДА || WideWorldImporters | Приложение | Градове | Местоположение | dbo | dbo | ИЗБЕРЕТЕ | ДА || WideWorldImporters | Приложение | Градове | Местоположение | dbo | dbo | АКТУАЛИЗИРАНЕ | ДА |+-------------------+--------------+---------- ----+--------------+-----------+-----------+----- --------+----------------+

Ето един по-сбит начин да го направите:

sp_column_privileges 'Градове', 'Приложение', 'WideWorldImporters', 'Местоположение';

Това връща същите резултати.

Пример 2 – Посочете само таблица

В този пример преминавам към друга база данни и посочвам само името на таблицата.

ИЗПОЛЗВАЙТЕ музика;EXEC sp_column_privileges @table_name ='Изпълнители';

Резултат:

+------------------+--------------+---------- ----+--------------+-----------+-----------+----- --------+----------------+| TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | COLUMN_NAME | КОНДЕНТЪТ | ПОЛУЧАВАТЕЛ | ПРИВИЛЕГИЯ | МОЖЕ ДА СЕ ||-------------------+--------------+----------- ---+--------------+-----------+-----------+------ -------+----------------|| Музика | dbo | Художници | ActiveFrom | dbo | dbo | ВМЕСТЕ | ДА || Музика | dbo | Художници | ActiveFrom | dbo | dbo | ЛИТЕРАТУРА | ДА || Музика | dbo | Художници | ActiveFrom | dbo | dbo | ИЗБЕРЕТЕ | ДА || Музика | dbo | Художници | ActiveFrom | dbo | dbo | АКТУАЛИЗИРАНЕ | ДА || Музика | dbo | Художници | ArtistId | dbo | dbo | ВМЕСТЕ | ДА || Музика | dbo | Художници | ArtistId | dbo | dbo | ЛИТЕРАТУРА | ДА || Музика | dbo | Художници | ArtistId | dbo | dbo | ИЗБЕРЕТЕ | ДА || Музика | dbo | Художници | ArtistId | dbo | dbo | АКТУАЛИЗИРАНЕ | ДА || Музика | dbo | Художници | Име на изпълнител | dbo | dbo | ВМЕСТЕ | ДА || Музика | dbo | Художници | Име на изпълнител | dbo | dbo | ЛИТЕРАТУРА | ДА || Музика | dbo | Художници | Име на изпълнител | dbo | dbo | ИЗБЕРЕТЕ | ДА || Музика | dbo | Художници | Име на изпълнител | dbo | dbo | АКТУАЛИЗИРАНЕ | ДА |+-------------------+--------------+----------- ---+--------------+-----------+-----------+------ -------+----------------+

Това връща привилегиите за всички колони в посочената таблица.

Имайте предвид, че трябва да сте в правилната база данни. Ако стартирам отново предишния пример в друга база данни, няма да получа резултати.

ИЗПОЛЗВАЙТЕ WideWorldImporters;EXEC sp_column_privileges @table_name ='Изпълнители';

Резултат:

(0 засегнати реда)

Пример 3 – Относно квалификатора на таблица

Ако предоставите @table_qualifier аргумент, той трябва да е същият като текущата база данни. Ако не е, вероятно ще получите съобщение за грешка 15250.

ИЗПОЛЗВАЙТЕ музика;EXEC sp_column_privileges @table_name ='Изпълнители', @table_qualifier ='WideWorldImporters';

Резултати:

Съобщение 15250, ниво 16, състояние 1, процедура sp_column_privileges, ред 19. Компонентът на името на базата данни на квалификатора на обекта трябва да бъде името на текущата база данни.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Йерархични заявки в SQL Server 2005

  2. Как работи функцията LEFT() в SQL Server (T-SQL)

  3. Как да използвате функцията IDENTITY() в SQL Server

  4. Как да проверя дали съществува база данни в SQL Server?

  5. Направете, а не нарушавайте производителността на SQL Server