Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan Keistimewaan Kolom untuk Tabel di SQL Server menggunakan T-SQL:sp_column_privileges

Di SQL Server Anda dapat menggunakan sp_column_privileges prosedur tersimpan sistem untuk mengembalikan informasi hak istimewa kolom untuk tabel tertentu di lingkungan saat ini.

Berikan nama tabel sebagai argumen saat menjalankan prosedur tersimpan, dan hak istimewa kolom akan dikembalikan untuk tabel itu. Anda juga dapat memberikan pemilik tabel, kualifikasi tabel, dan/atau nama kolom jika diperlukan.

Sintaks

Sintaksnya seperti ini:

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

@table_name argumen adalah satu-satunya argumen yang diperlukan. Ini adalah nama tabel yang Anda inginkan hak istimewa kolomnya.

Contoh 1 – Mengembalikan Hak Istimewa untuk Kolom Tertentu

Contoh ini menggunakan semua argumen yang mungkin. Ini mengembalikan hak istimewa untuk kolom tertentu, dalam tabel tertentu, dari pemilik tabel tertentu, dalam database tertentu.

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

Hasil:

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

Berikut cara yang lebih ringkas untuk melakukannya:

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

Itu mengembalikan hasil yang sama.

Contoh 2 – Tentukan Tabel Saja

Dalam contoh ini saya beralih ke database lain dan hanya menentukan nama tabel.

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

Hasil:

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

Ini mengembalikan hak istimewa untuk semua kolom dalam tabel yang ditentukan.

Perhatikan bahwa Anda harus berada di database yang benar. Jika saya menjalankan kembali contoh sebelumnya pada database yang berbeda, saya tidak mendapatkan hasil.

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

Hasil:

(0 rows affected)

Contoh 3 – Tentang Tabel Qualifier

Jika Anda memberikan @table_qualifier argumen, itu harus sama dengan database saat ini. Jika tidak, Anda mungkin akan mendapatkan pesan kesalahan 15250.

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

Hasil:

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. Memisahkan string di sql server

  2. Cara Menggunakan Fungsi IDENTITY() di SQL Server

  3. Bagaimana saya bisa memecahkan masalah kumpulan koneksi antara ASP.NET dan SQL Server?

  4. Cara Mendapatkan Nilai Kolom Identitas tanpa Menyebutkan Nama Kolom Identitas di Pilih - Tutorial SQL Server / T-SQL Part 46

  5. Bagaimana cara melakukan IF...THEN dalam SQL SELECT?