IZIN (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Mengembalikan nilai yang berisi bitmap yang menunjukkan izin pernyataan, objek, atau kolom pengguna saat ini.
Penting
Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan fn_my_permissions dan Has_Perms_By_Name sebagai gantinya. Penggunaan fungsi IZIN yang berkelanjutan dapat mengakibatkan performa yang lebih lambat.
Sintaks
PERMISSIONS ( [ objectid [ , 'column' ] ] )
Argumen
objectid
Adalah ID dari yang dapat diamankan. Jika objectid tidak ditentukan, nilai bitmap berisi izin pernyataan untuk pengguna saat ini; jika tidak, bitmap berisi izin pada yang dapat diamankan untuk pengguna saat ini. Yang dapat diamankan yang ditentukan harus berada dalam database saat ini. Gunakan fungsi OBJECT_ID untuk menentukan nilai objectid.
' kolom '
Adalah nama opsional kolom tempat informasi izin dikembalikan. Kolom harus berupa nama kolom yang valid dalam tabel yang ditentukan oleh objectid.
Jenis Kembalian
int
Keterangan
IZIN dapat digunakan untuk menentukan apakah pengguna saat ini memiliki izin yang diperlukan untuk menjalankan pernyataan atau memberikan izin kepada pengguna lain.
Informasi izin yang dikembalikan adalah bitmap 32-bit.
16 bit yang lebih rendah mencerminkan izin yang diberikan kepada pengguna, dan juga izin yang diterapkan ke grup Windows atau dan peran server tetap di mana pengguna saat ini adalah anggota. Misalnya, nilai yang dikembalikan 66 (nilai heks 0x42), ketika tidak ada objectid yang ditentukan, menunjukkan bahwa pengguna memiliki izin untuk menjalankan pernyataan CREATE TABLE (nilai desimal 2) dan BACKUP DATABASE (nilai desimal 64).
16 bit atas mencerminkan izin yang dapat diberikan pengguna kepada pengguna lain. 16 bit atas ditafsirkan persis seperti yang untuk 16 bit yang lebih rendah yang dijelaskan dalam tabel berikut, kecuali digeser ke kiri dengan 16 bit (dikalikan dengan 65536). Misalnya, 0x8 (nilai desimal 8) adalah bit yang menunjukkan izin INSERT saat objectid ditentukan. Sedangkan, 0x80000 (nilai desimal 524288) menunjukkan kemampuan untuk MEMBERIKAN izin INSERT, karena 524288 = 8 x 65536.
Karena keanggotaan dalam peran, pengguna yang tidak memiliki izin untuk menjalankan pernyataan mungkin masih dapat memberikan izin tersebut kepada pengguna lain.
Tabel berikut menunjukkan bit yang digunakan untuk izin pernyataan (objectid tidak ditentukan).
Bit (des) | Bit (hex) | Izin pernyataan |
---|---|---|
1 | 0x1 | CREATE DATABASE (hanya database master) |
2 | 0x2 | CREATE TABLE |
4 | 0x4 | CREATE PROCEDURE |
8 | 0x8 | BUAT TAMPILAN |
16 | 0x10 | BUAT ATURAN |
32 | 0x20 | BUAT DEFAULT |
64 | 0x40 | DATABASE CADANGAN |
128 | 0x80 | LOG CADANGAN |
256 | 0x100 | Dicadangkan |
Tabel berikut ini memperlihatkan bit yang digunakan untuk izin objek yang dikembalikan saat hanya objectid yang ditentukan.
Bit (des) | Bit (hex) | Izin pernyataan |
---|---|---|
1 | 0x1 | PILIH SEMUA |
2 | 0x2 | PERBARUI SEMUA |
4 | 0x4 | REFERENSI SEMUA |
8 | 0x8 | INSERT |
16 | 0x10 | DELETE |
32 | 0x20 | EXECUTE (hanya prosedur) |
4096 | 0x1000 | SELECT ANY (setidaknya satu kolom) |
8192 | 0x2000 | PERBARUI APA PUN |
16384 | 0x4000 | REFERENSI APA PUN |
Tabel berikut ini memperlihatkan bit yang digunakan untuk izin objek tingkat kolom yang dikembalikan saat objectid dan kolom ditentukan.
Bit (des) | Bit (hex) | Izin pernyataan |
---|---|---|
1 | 0x1 | SELECT |
2 | 0x2 | UPDATE |
4 | 0x4 | REFERENCES |
NULL dikembalikan ketika parameter yang ditentukan adalah NULL atau tidak valid (misalnya, objectid atau kolom yang tidak ada). Nilai bit untuk izin yang tidak berlaku (misalnya izin EXECUTE, bit 0x20, untuk tabel) tidak ditentukan.
Gunakan operator bitwise AND (&) untuk menentukan setiap bit yang diatur dalam bitmap yang dikembalikan oleh fungsi PERMISSIONS.
Prosedur tersimpan sistem sp_helprotect juga dapat digunakan untuk mengembalikan daftar izin untuk pengguna dalam database saat ini.
Contoh
J. Menggunakan fungsi IZIN dengan izin pernyataan
Contoh berikut menentukan apakah pengguna saat ini dapat menjalankan CREATE TABLE
pernyataan.
IF PERMISSIONS()&2=2
CREATE TABLE test_table (col1 INT)
ELSE
PRINT 'ERROR: The current user cannot create a table.';
B. Menggunakan fungsi IZIN dengan izin objek
Contoh berikut menentukan apakah pengguna saat ini dapat menyisipkan baris data ke Address
dalam tabel dalam AdventureWorks2022
database.
IF PERMISSIONS(OBJECT_ID('AdventureWorks2022.Person.Address','U'))&8=8
PRINT 'The current user can insert data into Person.Address.'
ELSE
PRINT 'ERROR: The current user cannot insert data into Person.Address.';
C. Menggunakan fungsi IZIN dengan izin yang dapat diberikan
Contoh berikut menentukan apakah pengguna saat ini dapat memberikan izin INSERT pada Address
tabel dalam AdventureWorks2022
database kepada pengguna lain.
IF PERMISSIONS(OBJECT_ID('AdventureWorks2022.Person.Address','U'))&0x80000=0x80000
PRINT 'INSERT on Person.Address is grantable.'
ELSE
PRINT 'You may not GRANT INSERT permissions on Person.Address.';
Lihat Juga
TOLAK (Transact-SQL)
GRANT (T-SQL)
OBJECT_ID (T-SQL)
MENCABUT (Transact-SQL)
sp_helprotect (T-SQL)
Fungsi Sistem (Transact-SQL)