Aracılığıyla paylaş


İ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.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

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.';