SID'ler ve kimlikleri
İle etkileşim kod yazmak ise SQL Server altyapısı, olması gereken iki sayının iç çarpımını olarak kullanılan farkındapatron. Her patron, bir kimlik ve güvenlik kimliği (SID) vardır.Anlamı ve bu numaraların kaynak patron nasıl oluşturulduğuna ve sunucu asıl adı veya bir veritabanı sorumlusunun olmasına bağlıdır.
Sunucu düzeyinde kimlik numarası
Zaman bir SQL Server oturum oluşturulduğunda, onu atanmış bir kimlik ve bir SID.Bunlar içinde görülebilir sys.server_principals Katalog görünümü olarak principal_id ve SID.Kimliği (principal_id) oturum bir güvenliği sağlanabilir içinde sunucu. olarak tanımlayanTarafından atanan SQL Server oturum oluşturulduğunda.Bir oturum açma silindiğinde, kendi kimlik numarasını geri dönüştürülür.SID, oturum açma güvenlik bağlamında tanımlar ve sunucu örnek içinde benzersizdir.SID'i kaynak oturumu nasıl oluşturulacağını bağlıdır.Oturum açma bir Windows kullanıcısı veya grubu oluşturduysanız, Windows SID'sini verilir kaynak asıl; Windows SID'si etki alanı içinde benzersizdir.If the SQL Server login is created from a certificate or asymmetric key, it is assigned a SID derived from the SHA-1 hash of the public key.Eski stil olarak oturumu oluşturulur, SQL Server oturum açma bir parola, sunucu gerektiren üretmek SID.
Veritabanı düzeyinde kimlik numarası
Veritabanı kullanıcı oluşturulduğu sırada bir kimlik ve bir güvenlik kimliği (SID) atanır.Bu sayılar olarak görünür sys.database_principals Katalog görünümü olarak principal_id ve SID.Olarak bir güvenliği sağlanabilir bir veritabanı içinde kullanıcı Kimliğini tanımlar.Bir veritabanı kullanıcısı silindiğinde, geri dönüşümlü bir kimliktir.Bir veritabanı için SID atanan kullanıcı veritabanı içinde benzersiz.SID'i kaynak veritabanı kullanıcı nasıl oluşturulacağını bağlıdır.Kullanıcı tarafından oluşturulan, bir SQL Server login, onu verilir SID'SİDİR oturum açma.Kullanıcı bir sertifika veya asimetrik anahtar oluşturduysanız, SID ortak anahtar sha-1 karma değerden türetilir.
En fazla veritabanı kullanıcı sayısı
Veritabanı kullanıcılarının sayısı kullanıcı kimliğinin boyutu tarafından belirlenir alan.Bir kullanıcı kimliği değeri sıfır veya pozitif tamsayı olmalıdır.De SQL Server 2000, kullanıcı kimliği olarak depolanan bir smallint oluşan 16 bit, aşağıdakilerden biri olan işareti.Bu nedenle, kullanıcı kimlikleri içinde en fazla sayısını SQL Server 2000 2,15 32.768 =.De SQL Server 2005 ve daha ileri sürümlerinde kullanıcı kimliği olarak depolanır bir int oluşan 32 bitlik, aşağıdakilerden biri olan işareti.Bu ek bitler 2 atamak mümkün hale31 = 2,147,483,648 kimlik numaraları.
Veritabanı kullanıcı kimlikleri aşağıdaki gösterildiği gibi ön-tahsis aralıkları bölünmüş tablo.
sql Server 2000 kimliği |
sql Server 2005 kimliği |
Tahsis |
---|---|---|
0 |
0 |
public |
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 |
Ayrılmış |
16400 - 32767 |
Roller |
|
16400 - 2,147,483,647 |
Kullanıcılar, roller, uygulama rolleri, diğer adlar |
Gelen kullanıcı kimliği boyutu artar smallint (16 bit) için int (32 bit).32-Bit kullanıcı aktarılırsa kimliği yanlış sonuçlar verir bir 16-bit kullanıcı gerektiren API'leri kimliği.Ne zaman veri ve uygulamalar için oluşturulan SQL Server 2000 veya daha önceki sürümlerde, gözden geçirmelisiniz kod başvurular için aşağıdaki kaldırılmış 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.