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.