Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Mevcut kullanıcının ifadesi, nesnesi veya sütun izinlerini gösteren bir bitmap içeren bir değer döndürür.
Önemli
Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine fn_my_permissions ve Has_Perms_By_Name kullanın. PERMISSIONS fonksiyonunun sürekli kullanılması performansın yavaşlamasına yol açabilir.
Transact-SQL söz dizimi kuralları
Sözdizimi
PERMISSIONS ( [ objectid [ , 'column' ] ] )
Arguments
Nesne Kimliği
Bir temenkul alıcının kimliği nedir.
Eğer objectid belirtilmemişse, bitmap değeri mevcut kullanıcı için ifade yetkilerini içerir; aksi takdirde, bitmap mevcut kullanıcı için güvenli bir sistem üzerinde izinler içerir. Belirtilen güvenlikli madde mevcut veritabanında olmalıdır.
Nesne değeribelirlemek için OBJECT_ID fonksiyonunu kullanın.
'Sütun'
İzin bilgisinin iade edildiği bir sütunun isteğe bağlı adıdır. Sütun, objectid tarafından belirtilen tabloda geçerli bir sütun adı olmalıdır.
Dönüş Türleri
int
Açıklamalar
İZNLER, mevcut kullanıcının bir ifadeyi çalıştırmak veya başka bir kullanıcıya izin vermek için gerekli izinlere sahip olup olmadığını belirlemek için kullanılabilir.
Verilen izin bilgisi 32-bit bir bitkarttır.
Alt 16 bit, kullanıcıya verilen izinleri ve ayrıca Windows gruplarına veya mevcut kullanıcının üyesi olduğu sabit sunucu rollerine uygulanan izinleri yansıtır. Örneğin, herhangi bir nesne kimliği belirtilmediğinde 66 döndürülen değer (hex değeri 0x42), kullanıcının CREATE TABLE (ondalık değer 2) ve YEDEK VERITABANI (ondalık değer 64) ilemelerini çalıştırma iznine sahip olduğunu gösterir.
Üst 16 bit, kullanıcının diğer kullanıcılara VEREBILECEĞI YETINLERİ yansıtır. Üst 16 bit, aşağıdaki tablolarda tanımlanan alt 16 bitin bitleri gibi yorumlanır, ancak bunlar sola 16 bit kaydırılır (çarpı 65536). Örneğin, 0x8 (ondalık değer 8), bir nesne kimliği belirtildiğinde INSERT iznini gösteren bittir. Oysa 0x80000 (ondalık değer 524288) INSERT izni verme yeteneğini gösterir, çünkü 524288 = 8 x 65536.
Rol üyeliği nedeniyle, bir ifade yürütme izni olmayan bir kullanıcı yine de bu izni başka bir kullanıcıya verebilir.
Aşağıdaki tablo, ifade izinleri için kullanılan bitleri gösterir (objectid belirtilmemiştir).
| Bit (dec) | Bit (altıgen) | Bildirim izni |
|---|---|---|
| 1 | 0x1 | CREATE DATABASE (sadece ana veritabanı) |
| 2 | 0x2 | CREATE TABLE |
| 4 | 0x4 | İŞLEM OLUŞTUR |
| 8 | 0x8 | GÖRÜNÜM YARAT |
| 16 | 0x10 | KURAL OLUŞTUR |
| 32 | 0x20 | VARSAYıLAN OLUŞTUR |
| 64 | 0x40 | YEDEKLEME VERITABANı |
| 128 | 0x80 | YEDEKLEME GÜNLÜĞÜ |
| 256 | 0x100 | Rezerve edildi |
Aşağıdaki tablo, yalnızca objectid belirtildiğinde döndürülen nesne izinleri için kullanılan bitleri gösterir.
| Bit (dec) | Bit (altıgen) | Bildirim izni |
|---|---|---|
| 1 | 0x1 | HEPSİNİ SEÇ |
| 2 | 0x2 | HEPSİNİ GÜNCELLE |
| 4 | 0x4 | TÜM KAYNAKLAR |
| 8 | 0x8 | INSERT |
| 16 | 0x10 | DELETE |
| 32 | 0x20 | EXECUTE (sadece prosedürler) |
| 4096 | 0x1000 | HERHANGI BİRİ SEÇ (en az bir sütun) |
| 8192 | 0x2000 | HERHANGI BIR GÜNCELLEME VAR |
| 16384 | 0x4000 | HERHANGI BIR REFERANS VAR |
Aşağıdaki tablo, hem objectid hem de column belirtildiğinde döndürülen sütun düzeyindeki nesne izinleri için kullanılan bitleri gösterir.
| Bit (dec) | Bit (altıgen) | Bildirim izni |
|---|---|---|
| 1 | 0x1 | SELECT |
| 2 | 0x2 | Güncelleme |
| 4 | 0x4 | REFERENCES |
Belirli bir parametre NULL veya geçerli değilse (örneğin, var olmayan bir nesne id veya sütun) NULL döner. Uygulanmayan izinler için bit değerleri (örneğin EXECUTE izni, bit 0x20, bir tablo için) tanımlanmamıştır.
PERMISSIONS fonksiyonunun döndürüp dönen bitmap'teki her bit kümesini belirlemek için bitbazda AND (&) operatörünü kullanın.
sp_helprotect sistem depolanmış prosedür, mevcut veritabanındaki bir kullanıcı için bir izinler listesini de döndürmek için kullanılabilir.
Örnekler
A. PERMISSIONS fonksiyonunu ifade izinleriyle kullanmak
Aşağıdaki örnek, mevcut kullanıcının ifadeyi CREATE TABLE çalıştırıp çalıştıramayacağını belirler.
IF PERMISSIONS()&2=2
CREATE TABLE test_table (col1 INT)
ELSE
PRINT 'ERROR: The current user cannot create a table.';
B. PERMISSIONS fonksiyonunu nesne izinleriyle kullanmak
Aşağıdaki örnek, mevcut kullanıcının veritabanındaki tabloya Address bir satır veri AdventureWorks2025 ekleyip ekleyemeyeceğini belirler.
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. PERMISSIONS fonksiyonunun verilebilir izinlerle kullanıldığı
Aşağıdaki örnek, mevcut kullanıcının veritabanındaki tablo Address üzerindeki AdventureWorks2025 INSERT iznini başka bir kullanıcıya verip veremeyeceğini belirler.
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.';
Ayrıca Bkz.
REDDET (Transact-SQL)
HİBE (Transact-SQL)
OBJECT_ID (Transact-SQL)
İPTAL ETMEK (Transact-SQL)
sp_helprotect (Transact-SQL)
Sistem İşlevleri (Transact-SQL)