Share via


İZİNLER (Transact-sql)

Deyimi, nesne veya sütun izinler geçerli kullanıcının gösteren bir bit eşlem içeren bir değeri 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.Kullanım fn_my_permissions ve Has_Perms_By_Name onun yerine. PERMISSIONS işlevini kullanmaya devam etmeniz daha yavaş performans sonuçlanabilir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

PERMISSIONS ( [ objectid [ , 'column' ] ] )

Bağımsız değişkenler

  • objectid
    Bir güvenlik altına alınabilir kimliğidir. Eğer objectid, deyimi izinler geçerli kullanıcının; bit eşlem değeri içeren belirtilmemiş Aksi takdirde, bitmap güvenilir geçerli kullanıcı için izinleri içerir. Güvenilir belirtilen geçerli veritabanı içinde olmalıdır. Kullanım OBJECT_ID belirlemek için işlev objectiddeğer.

  • 'column'
    İsteğe bağlı bir sütun için hangi izin bilgileri döndürülür adıdır. Geçerli sütun adı tarafından belirtilen tablodaki sütun olmalıdır objectid.

Dönüş Türleri

int

Açıklamalar

İZİNLER geçerli kullanıcının bir deyimini yürütmek için veya başka bir kullanıcıya izin vermek için gerekli izinlere sahip olup olmadığını belirlemek için kullanılır.

Döndürülen izinleri bir 32-bit bit eşlem bilgilerdir.

Kullanıcıya verilen izinlere ve ayrıca Windows grubuna uygulanan izinlerin alt 16 biti yansıtmak veya ve sabit sunucu rolleri geçerli kullanıcının üyesi olduğu. 66 (Onaltılık değer 0x42), örneğin, döndürülen değeri Hayır objectidbelirtilirse, kullanıcı create table (ondalık değeri 2) ve yedekleme veritabanı (ondalık değeri 64) deyimleri yürütme iznine sahip olduğunu gösterir.

Üst 16 bit kullanıcı diğer kullanıcılara verebilir izinler yansıtır. Üst 16 bit, tam olarak bu alt 16 biti dışında onlar tarafından 16 bits (65536 tarafından çarpılan) sola kaydırılır aşağıdaki tabloda açıklandığı gibi yorumlanır. Örneğin, 0x8 (ondalık değeri 8) INSERT izni gösteren parçasıdır ne zaman bir objectidbelirtilen. 0X80000 (ondalık değer 524288) hibe ekleme izni, yeteneği gösterir çünkü Oysa 524288 = 8 x 65536.

Rol üyeliği nedeniyle, bir deyimi yürütme izni olmayan bir kullanıcı hala başka bir kullanıcıya bu izni vermek mümkün olabilir.

Aşağıdaki tablo deyimi izinleri için kullanılan bit sayısını gösterir ( objectid belirtilmemiş).

Bit (dec)

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

gerçekleşen

KURAL OLUŞTURMA

32

0x20

VARSAYILAN OLUŞTURMA

64

0x40

YEDEKLEME VERİTABANI

128

0x80

YEDEKLEME GÜNLÜĞÜ

256

0x100

Aittir

Aşağıdaki tablo, yalnızca olduğunda döndürülen nesne izinleri için kullanılan bit gösterir objectidbelirtilen.

Bit (dec)

Bit (onaltılık)

Deyimi izni

1

0x1

TÜMÜNÜ SEÇ

2

0x2

TÜM GÜNCELLEŞTİRME

4

0x4

TÜM BAŞVURULARI

8

0x8

EKLE

16

gerçekleşen

DELETE

32

0x20

execute (yalnızca yordamları)

4096

0x1000

Herhangi bir (en az bir sütun) seçin

8192

0x2000

TÜM GÜNCELLEŞTİRME

16384

0x4000

TÜM BAŞVURULARI

Aşağıdaki tabloda ne zaman döndürülen sütun düzeyi nesne izinleri için kullanılan bit gösterir hem de objectidve sütun belirtilen.

Bit (dec)

Bit (onaltılık)

Deyimi izni

1

0x1

SEÇİN

2

0x2

GÜNCELLEŞTİRME

4

0x4

REFERANSLAR

Belirtilen parametre null veya geçersiz olduğunda null döndürülür (örneğin, bir objectidya da varolmayan sütunu). (Örneğin 0x20, tablo biraz execute izni) uygulamayın izinlerin bit değerleri tanımsızdır.

Bitsel ve (&) işlecini PERMISSIONS işlevi tarafından döndürülen bit eşlem ayarlanan her bit belirlemek için.

sp_helprotectSistem saklı yordam ayrıca geçerli veritabanında bir kullanıcı için izinler listesini döndürmek için kullanılabilir.

Örnekler

A.Deyimi izinleriyle PERMISSIONS işlevini kullanma

Aşağıdaki örnek geçerli kullanıcı yürütebilir olup olmadığını belirleyen CREATE TABLEdeyimi.

IF PERMISSIONS()&2=2
   CREATE TABLE test_table (col1 INT)
ELSE
   PRINT 'ERROR: The current user cannot create a table.';

IF PERMISSIONS()&2=2
   CREATE TABLE test_table (col1 INT)
ELSE
   PRINT 'ERROR: The current user cannot create a table.';

B.Nesne izinleriyle PERMISSIONS işlevini kullanma

Aşağıdaki örnek geçerli kullanıcı veri satırı giremeyeceğinizi belirler Addressiçinde masa AdventureWorks2012veritabanı.

IF PERMISSIONS(OBJECT_ID('AdventureWorks2012.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.';

IF PERMISSIONS(OBJECT_ID('AdventureWorks2012.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.C.Grantable izinleriyle PERMISSIONS işlevini kullanma

Aşağıdaki örnek geçerli kullanıcı üzerinde INSERT izni verebilirsiniz olup olmadığını belirleyen Addressiçinde masa AdventureWorks2012başka bir kullanıcı veritabanına.

IF PERMISSIONS(OBJECT_ID('AdventureWorks2012.Person.Address','U'))&0x80000=0x80000
   PRINT 'INSERT on Person.Address is grantable.'
ELSE
   PRINT 'You may not GRANT INSERT permissions on Person.Address.';

IF PERMISSIONS(OBJECT_ID('AdventureWorks2012.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.

Başvuru

DENY (Transact-sql)

grant (Transact-sql)

OBJECT_ID (Transact-sql)

revoke (Transact-sql)

Sp_helprotect (Transact-sql)

Sistem işlevler (Transact-sql)