Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
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
PERMISSIONS dapat digunakan untuk menentukan apakah pengguna saat ini memiliki izin yang diperlukan untuk mengeksekusi pernyataan atau untuk GRANT izin ke 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 sebesar 66 (nilai hex 0x42), ketika tidak ada objectid yang ditentukan, menunjukkan bahwa pengguna memiliki izin untuk menjalankan CREATE TABLE pernyataan (nilai desimal 2) dan BACKUPDATABASE (nilai desimal 64).
16 bit atas mencerminkan izin yang dapat GRANT pengguna untuk 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 INSERT izin saat objectid ditentukan. Padahal, 0x80000 (nilai desimal 524288) menunjukkan kemampuan izin GRANTINSERT , 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 utama) |
| 2 | 0x2 | CREATE TABLE |
| 4 | 0x4 | CREATE PROCEDURE |
| 8 | 0x8 | CREATE VIEW |
| 16 | 0x10 | CREATE RULE |
| 32 | 0x20 | CREATE DEFAULT |
| 64 | 0x40 | BACKUP DATABASE |
| 128 | 0x80 | BACKUP CATATAN |
| 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 | UPDATE 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 | UPDATE APA SAJA |
| 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 AdventureWorks2025 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 INSERT izin pada Address tabel dalam AdventureWorks2025 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
DENY (Transact-SQL)
GRANT (Transact-SQL)
OBJECT_ID (T-SQL)
REVOKE (Transact-SQL)
sp_helprotect (T-SQL)
Fungsi Sistem (Transact-SQL)