Aracılığıyla paylaş


Sıd'ler ve kimlikleri

İle etkileşim kod yazmak,SQL Serveraltyapısı, olması gereken iki sayı olarak iç temsilini kullanılan haberdar patron.Her patron, bir kimlik ve güvenlik kimliği (SID) vardır.Ne anlama geldiğini ve kaynak bu sayıda patron nasıl oluşturulduğuna ve sunucu asıl adı ya da veritabanını patron olmasına bağlıdır.

Sunucu-düzey kimlik numarası

, BirSQL Serveroturum oluşturulduğunda, kendisine atanmış bir kimlik ve bir SID.Bu sys.server_principals Katalog görünümü principal_id ve SID olarak görünür.Bir güvenliği sağlanabilir sunucunun içinde olarak oturum açma kimliği (principal_id) tanımlar.Tarafından atanırSQL Serveroturum oluşturulduğunda.Oturum açma sildiğinizde, kimlik numarası dönüştürülmeden.SID, oturum açma güvenlik bağlamını belirler ve sunucuyu içinde benzersizdir.kaynak Oturumu nasıl oluşturulduğunu SID'si bağlıdır.Oturum açma bir Windows kullanıcısı veya grubu oluşturduysanız, kaynak İlkesi Windows SID'si verilir; Windows Güvenlik KİMLİĞİNİ etki alanı içinde benzersizdir.,SQL Serveroturum açma sertifikası veya asimetrik anahtar oluşturulur, bir SID değeri atanmış olan ortak anahtarı. SHA-1 karma değerden elde edilenOturum açma eski stil olarak oluşturulurSQL Serveroturum açma sunucu parola gerektiren oluşturmak SID.

Veritabanı düzeyinde kimlik numarası

Bir veritabanı kullanıcısı oluşturulduğunda, bir kimlik ve güvenlik kimliği (SID) atanır.Bu sayılar sys.database_principals Katalog görünümü principal_id ve SID olarak görünür.Güvenlik veritabanı içinde kullanıcının Kimliğini tanımlar.Bir veritabanı kullanıcısı silindiğinde, geri dönüşümlü bir kimliktir.SID, bir veritabanına atanan kullanıcı veritabanı içinde benzersiz.Veritabanı kullanıcısı nasıl oluşturulduğunu SID kaynağına bağlıdır.Kullanıcı tarafından oluşturulan birSQL Serveroturum açma, onu sağlanır SID oturum açma.Kullanıcı bir sertifika veya asimetrik anahtar oluşturulur, SID ortak anahtar SHA-1 karma değerden türetilir.

Veritabanı kullanıcıları en fazla sayısı

Veritabanı kullanıcıları sayısı, kullanıcı kimliği alanının boyutuna göre belirlenir.Bir kullanıcı kimliği değeri sıfır veya pozitif bir tamsayı olmalıdır.InSQL Server 2000, kullanıcı kimliği olarak depolandığı birsmallintoluşan 16 bit, bunlardan biri olan işareti.Bu nedenle, en yüksek kullanıcı kimlikleriSQL Server2000, 215 = 32,768.InSQL Server 2005ve sonraki sürümlerinde, kullanıcı Kimliğini gibi birintoluşan 32 bitlik, bunlardan biri olan işareti.Bu ek biti yapılması, With 2 atamak için31 = 2,147,483,648 Kimliği numaraları.

Veritabanı kullanıcı kimliği aşağıdaki tabloda gösterildiği gibi ön tahsis aralıkları ile ayrılır.

SQL Server 2000 kimliği

SQL Server 2005 kimliği

Tahsis edilen

0

0

Ortak

1

1

dbo

2

2

guest

3

3

INFORMATION_SCHEMA

4

4

SYSTEM_FUNCTION_SCHEMA

5 - 16383

5 - 16383

Kullanıcılar, diğer adlar, uygulama rolleri

16384

16384

db_owner

16385

16385

db_accessadmin

16386

16386

db_securityadmin

16387

16387

db_ddladmin

16389

16389

db_backupoperator

16390

16390

db_datareader

16391

16391

db_datawriter

16392

16392

db_denydatareader

16393

16393

db_denydatawriter

16394 - 16399

16394 - 16399

Rezerve

16400 - 32767

Roller

16400 - 2,147,483,647

Kullanıcılar, roller, uygulama rolleri, diğer adlar

Kullanıcı kimliği boyutu artarsmallint(16 bits) içinint(32 bits).16-Bit kullanıcı kimliği hatalı sonuçlar döndürür, 32-bit kullanıcı aktarılırsa gerektiren API kimliği.Veri ve uygulamaları için geçişSQL Server 2000ya da daha önce gözden kodu başvuruları aşağıdaki kaldırılan arabirimleri.

  • sysusers

  • syscacheobjects

  • Sysmembers

  • sysobjects

  • syspermissions

  • sysprocesses

  • sysprotects

  • systypes

  • user_id

Bu arabirimler, 16-bit kullanıcı kimlikleri gerektirir.32-Bit kullanıcı kimlikleri ile kullanıldığında doğru sonuçlar döndürmüyor.