Aracılığıyla paylaş


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.

Topic link iconTransact-SQL sözdizimi kuralları

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