Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhận đặc quyền cột cho một bảng trong SQL Server bằng T-SQL:sp_column_privileges

Trong SQL Server, bạn có thể sử dụng sp_column_privileges hệ thống lưu trữ thủ tục để trả về thông tin đặc quyền cột cho một bảng nhất định trong môi trường hiện tại.

Cung cấp tên bảng làm đối số khi thực hiện thủ tục được lưu trữ và các đặc quyền cột sẽ được trả về cho bảng đó. Bạn cũng có thể cung cấp chủ sở hữu bảng, bộ định lượng bảng và / hoặc tên cột nếu được yêu cầu.

Cú pháp

Cú pháp như sau:

sp_column_privileges [ @table_name = ] 'table_name'   
     [ , [ @table_owner = ] 'table_owner' ]   
     [ , [ @table_qualifier = ] 'table_qualifier' ]   
     [ , [ @column_name = ] 'column' ]

@table_name đối số là đối số bắt buộc duy nhất. Đây là tên của bảng mà bạn muốn có các đặc quyền của cột.

Ví dụ 1 - Trả lại Đặc quyền cho một Cột Cụ thể

Ví dụ này sử dụng tất cả các đối số có thể. Nó trả về các đặc quyền cho một cột cụ thể, trong một bảng cụ thể, từ chủ sở hữu bảng cụ thể, trong một cơ sở dữ liệu cụ thể.

EXEC sp_column_privileges 
  @table_name = 'Cities', 
  @table_owner = 'Application',   
  @table_qualifier = 'WideWorldImporters',   
  @column_name = 'Location';

Kết quả:

+--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
| 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            |
+--------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+

Dưới đây là một cách ngắn gọn hơn để làm điều đó:

sp_column_privileges 
  'Cities', 
  'Application',   
  'WideWorldImporters',   
  'Location';

Điều đó trả lại kết quả tương tự.

Ví dụ 2 - Chỉ Chỉ định Bảng

Trong ví dụ này, tôi chuyển sang một cơ sở dữ liệu khác và chỉ xác định tên bảng.

USE Music;
EXEC sp_column_privileges
  @table_name = 'Artists';

Kết quả:

+-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+
| 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            |
+-------------------+---------------+--------------+---------------+-----------+-----------+-------------+----------------+

Điều này trả về các đặc quyền cho tất cả các cột trong bảng được chỉ định.

Lưu ý rằng bạn cần phải ở trong cơ sở dữ liệu chính xác. Nếu tôi chạy lại ví dụ trước đó trên một cơ sở dữ liệu khác, tôi không nhận được kết quả nào.

USE WideWorldImporters;
EXEC sp_column_privileges
  @table_name = 'Artists';

Kết quả:

(0 rows affected)

Ví dụ 3 - Giới thiệu về Vòng loại bảng

Nếu bạn cung cấp @table_qualifier đối số, nó phải giống với cơ sở dữ liệu hiện tại. Nếu không, có thể bạn sẽ gặp lỗi Msg 15250.

USE Music;
EXEC sp_column_privileges
  @table_name = 'Artists',
  @table_qualifier = 'WideWorldImporters';

Kết quả:

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. so sánh một cột với một danh sách các giá trị trong t-sql

  2. cách hiệu quả để triển khai phân trang

  3. Cách lọc Hàng có Giá trị Null trong Câu lệnh Chọn trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 110

  4. Buộc Oracle trả lại N hàng trên cùng với SKIP ĐÃ KHÓA

  5. Chia một giá trị cột thành nhiều giá trị cột