İzinler (Transact-SQL)
Geçerli kullanıcının deyim, nesne veya sütun izinleri belirten bir bit eşlem içeren bir değer döndürür.
Önemli Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.Use fn_my_permissions ve Has_Perms_By_Name onun yerine.İZİNLERİ işlev kullanmaya devam düşük performansa neden olabilir.
Sözdizimi
PERMISSIONS ( [ objectid [ , 'column' ] ] )
Bağımsız değişkenler
objectid
Bir güvenliği sağlanabilirkimliğidir.objectid Belirtilmezse, bitmap değeri içeren deyim izinler geçerli kullanıcının; Aksi halde, bitmap, güvenliği sağlanabilir geçerli kullanıcının izinlerini içerir.Belirtilen güvenliği sağlanabilir geçerli veritabanı içinde olmalıdır.Use OBJECT_ID belirlemek içinişlev objectid değer.'column'
İsteğe bağlı izin bilgileri döndürülüyor bir sütun addır.Geçerli sütun adı tarafından belirtilen tablo sütun olmalıdır objectid.
Dönüş Türleri
int
Açıklamalar
İZİNLER geçerli kullanıcının olup izinlerini yürütmek deyim gerekli belirlemek için veya başka bir kullanıcıya izin VERMEK için kullanılabilir.
Döndürülen izinleri 32-bit bit eşlem bilgilerdir.
Kullanıcıya verilen izinlere ve ayrıca Windows gruplarına uygulanan izinleri alt 16 biti yansıtmak veya ve geçerli kullanıcının üyeolduğu sunucu rolleri sabit.Örneğin, döndürülen değeri 66 (onaltılık değeri 0x42), Hayır objectid belirtilmişse, gösterir kullanıcı olduğundan yürütmek izni create table (ondalık değeri 2) ve backup database (ondalık değeri 64) ifadeleri.
Üst 16 bitlik kullanıcı diğer kullanıcılara VEREBİLİR izinler yansıtır.Üst 16 bit tam olarak kaydırılacağı bunlar sola 16 bit (65536 tarafından çarpılan) tarafından uzaklık dışında aşağıdaki tabloda açıklanan alt 16 biti yönelik olarak yorumlanır.Örneğin, 0x8 (ondalık değeri 8) INSERT izni gösteren olduğu zaman bir objectid belirtilir.0X80000 (ondalık değer 524288) için izin ver eklemek, yeteneğini gösterir iken, 524288 = 8 x 65536.
Rol üyeliği nedeniyle, yürütmek izni olmayan bir kullanıcı bir deyim hala başka bir kullanıcıya bu izni vermek mümkün olabilir.
Aşağıdaki tablo deyim izinleri için kullanılan bit gösterir (objectid belirtilmezse).
Bit (Ara) |
Bit (onaltılık) |
Deyimi izni |
---|---|---|
1 |
0x1 |
create database (master yalnızca veritabanı) |
2 |
0x2 |
TABLO OLUŞTURMA |
4 |
0x4 |
YORDAM OLUŞTURMA |
8 |
0x8 |
GÖRÜNÜM OLUŞTURMA |
16 |
0x10 |
KURAL OLUŞTURMA |
32 |
0x20 değerli |
VARSAYILAN OLUŞTURMA |
64 |
0x40 |
VERİTABANI YEDEKLEME |
128 |
0x80 |
YEDEKLEME GÜNLÜĞÜ |
256 |
0x100 |
Ayrılmış |
Aşağıdaki tablo , yalnızca olduğunda döndürülen nesne izinleri için kullanılan bit gösterir objectid belirtilir.
Bit (Ara) |
Bit (onaltılık) |
Deyimi izni |
---|---|---|
1 |
0x1 |
TÜMÜNÜ SEÇ |
2 |
0x2 |
TÜMÜNÜ GÜNCELLEŞTİR |
4 |
0x4 |
TÜM BAŞVURULAR |
8 |
0x8 |
EKLE |
16 |
0x10 |
SİL |
32 |
0x20 değerli |
execute (yalnızca yordamları) |
4096 |
0x1000 |
Herhangi (en az bir sütun) seçin |
8192 |
0x2000 |
HERHANGİ BİR GÜNCELLEŞTİRME |
16384 |
0x4000 |
BAŞVURAN HERHANGİ |
Aşağıdaki tablo sütuniçin -düzey ne zaman döndürülen nesne izinleri için kullanılan bit gösterir hem de objectid ve sütun belirtilir.
Bit (Ara) |
Bit (onaltılık) |
Deyimi izni |
---|---|---|
1 |
0x1 |
SEÇİN |
2 |
0x2 |
GÜNCELLEŞTİRME |
4 |
0x4 |
BAŞVURULAR |
Belirtilen parametre null veya geçersiz olduğunda null değeri döndürülür (örneğin, bir objectid ya da varolmayan sütun ).(Örnek bir tablo0x20 değerli biti yürütme izni için) geçerli değildir izinlerin bit değerleri tanımsızdır.
Bit seviyesinde ve kullanmak (&) her belirlemek için işleç bit küme izinleri işlevtarafından döndürülen Bitmapteki.
sp_helprotect saklı yordam sistem da kullanılabilir bir kullanıcı geçerli veritabanına al. izinlerin listesini döndürmek için
Örnekler
A.İZİNLERİ işlev deyim izinleriyle kullanma
Aşağıdaki örnek, geçerli kullanıcı için mi yürütmek belirler CREATE TABLE deyim.
IF PERMISSIONS()&2=2
CREATE TABLE test_table (col1 INT)
ELSE
PRINT 'ERROR: The current user cannot create a table.';
B.Nesne izinlerine sahip izinleri işlev kullanma
Aşağıdaki örnek geçerli kullanıcı verileri bir satırını belirler Address tablo AdventureWorks2008R2 veritabanı.
IF PERMISSIONS(OBJECT_ID('AdventureWorks2008R2.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.Grantable izinlerine sahip izinleri işlev kullanma
Aşağıdaki örnek, geçerli kullanıcı üzerinde INSERT izni vermek olup olmadığını belirler. Address tablo AdventureWorks2008R2 veritabanı için başka bir kullanıcı.
IF PERMISSIONS(OBJECT_ID('AdventureWorks2008R2.Person.Address','U'))&0x80000=0x80000
PRINT 'INSERT on Person.Address is grantable.'
ELSE
PRINT 'You may not GRANT INSERT permissions on Person.Address.';