Share via


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.