IZINLERI (Transact-SQL)
deyim, nesne veya sütun izinler geçerli kullanıcının gösteren bir bit eşlem'i içeren bir değeri döndürür.
Important This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use fn_my_permissions and HAS_PERMS_BY_NAME (Transact-SQL) instead.IZINLERI işlevini kullanmaya devam yavaş performans neden olabilir.
PERMISSIONS ( [ objectid [ , 'column' ] ] )
Bağımsız değişkenler
objectid
Bir güvenliği sağlanabilir kimliğidir.If objectid olan belirtilmedi. bit eşlem değeri, geçerli kullanıcının izinlerini deyim içerir; aksi halde, bit eşlem, güvenliği sağlanabilir geçerli kullanıcının izinlerini içerir. Geçerli veritabanında güvenliği sağlanabilir belirtilmiş olmalıdır.Use object_id belirlemeye işlevobjectid değer.'column'
sütun, hangi izninin bilgi döndürdü isteğe bağlı adıdır.Sütun belirtilen tablosundaki geçerli bir sütun adını olmalıdır objectid.
Dönüş Türleri
int
Remarks
IZINLER geçerli kullanıcının başka bir kullanıcıya izin vermek ya da bir deyimini yürütmek için gerekli izinlere sahip olup olmadığını belirlemek için kullanılabilir.
Verilen izinleri 32-bit bit eşlem bilgilerdir.
Kullanıcıya verilen izinler ve ayrıca Windows gruplarına uygulanmış olan izinleri alt 16 biti yansıtmak veya ve geçerli kullanıcının üyesi olduğu bir sunucu rollerini sabit.Örneğin, döndürülen değeri 66 (onaltılık değeri 0x42), yok zaman objectid belirtilmemişse, kullanıcının CREATE tablo (ondalık değer 2) ve (ondalık değer 64) yedek DATABASE deyimi yürütmek iznine sahip olduğunu gösterir.
Üst 16 bit kullanıcı diğer kullanıcılara VEREBILIRSINIZ izinleri yansıtır.Üst 16 bit tam olarak bu kaydırılacağı, sola (65536'ile çarpılan) 16 bit olarak uzaklık dışında aşağıdaki tabloda açıklanan alt 16 bit olarak yorumlanır.Örneğin, 0x8 (ondalık değer 8) Ekle izni gösteren bitidir, bir objectid belirtildi. GRANT INSERT, izin yeteneği, çünkü 0x80000 (ondalık değer 524288) gösterir; oysa 524288 = 8 x 65536.
Rol üyeliği nedeniyle, bir deyim yürütmek izni olmayan bir kullanıcı hala bu izni başka bir kullanıcıya mümkün olabilir.
Aşağıdaki tablo, deyim izinleri () için kullanılan bit gösterir.objectid Belirtilen değil).
Bit (ara) |
Bit (onaltılık) |
deyim izni |
---|---|---|
1 |
0x1 |
CREATE DATABASE (master database only) |
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 |
VARSAYILAN OLUŞTURMA |
64 |
0x40 |
VERİTABANINI yedek |
128 |
0x80 |
GÜNLÜK yedek |
256 |
0x100 |
Rezerve |
Aşağıdaki tablo, yalnızca, döndürülen nesne izinleri için kullanılan bit gösterir. objectid belirtildi.
Bit (ara) |
Bit (onaltılık) |
deyim izni |
---|---|---|
1 |
0x1 |
TÜMÜNÜ SEÇME |
2 |
0x2 |
TÜM GÜNCELLEŞTİRME |
4 |
0x4 |
TÜM BAŞVURULAR |
8 |
0x8 |
EKLEME |
16 |
0x10 |
SİLME |
32 |
0x20 |
yürütmek (yalnızca yordamlar) |
4096 |
0x1000 |
SELECT ANY (en az bir sütun) |
8192 |
0x2000 |
HERHANGİ BİR GÜNCELLEŞTİRME |
16384 |
0x4000 |
HERHANGİ BİR BAŞVURUYOR |
Aşağıdaki tablo, döndürülen sütun düzey nesne izinleri için kullanılan bit gösterir her ikisi de objectid ve sütun belirtilmedi.
Bit (ara) |
Bit (onaltılık) |
deyim izni |
---|---|---|
1 |
0x1 |
SEÇİN |
2 |
0x2 |
GÜNCELLEŞTİRME |
4 |
0x4 |
BAŞVURULARI |
Belirtilen parametre NULL veya geçersiz olduğunda null DEĞERI döndürülür (örneğin, bir objectid veya var olmayan bir sütun). Izinler (örneğin, bir tablo için 0x20 bit yürütmek izni,) geçerli olmayan bit değerlerini tanımlanmaz.
Bit seviyesinde VE (kullanın.&) işleç IZINLERI işlev tarafından döndürülen bir bit eşlem kümesindeki her bir bit belirlenemiyor.
The sp_helprotect sistem saklı yordamı can also be used to return a list of permissions for a user in the current database.
Örnekler
C.IZINLERI kullanarak işlev deyim izinlere sahip
Aşağıdaki örnek, geçerli kullanıcının yürütebileceği olup olmadığını 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.IZINLERI kullanarak işlev nesne izinleri
Aşağıdaki örnek geçerli kullanıcının veri girebileceği bir satır belirler Address ' de tablo AdventureWorks Veritabanı.
IF PERMISSIONS(OBJECT_ID('AdventureWorks.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şlevini kullanma
Aşağıdaki örnek, geçerli kullanıcısı Ekle izni üzerinde verebilirsiniz olup olmadığını belirleyen Address ' de tablo AdventureWorks başka bir kullanıcı veritabanına.
IF PERMISSIONS(OBJECT_ID('AdventureWorks.Person.Address','U'))&0x80000=0x80000
PRINT 'INSERT on Person.Address is grantable.'
ELSE
PRINT 'You may not GRANT INSERT permissions on Person.Address.';