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.