Identyfikatory SID i identyfikatory

Jeśli jesteś pisania kodu, który współdziała z SQL Server silnika, należy pamiętać o dwóch liczb, które są używane jako wewnętrzne reprezentacje głównego zobowiązanego.Każdy podmiot ma identyfikator i identyfikator zabezpieczeń (SID).Znaczenie i źródło tych numerów zależą od tworzenia kapitału i czy jest obiektem serwera głównej bazy danych.

Numer identyfikacyjny poziom serwera

Gdy SQL Server logowania jest tworzony, przypisano identyfikator i identyfikator SID.Są one widoczne w sys.server_principals Widok wykazu jako principal_id i SID.Identyfikator (principal_id) identyfikuje Logowanie jako zabezpieczany w obrębie serwera.Jest przypisywana przez SQL Server podczas tworzenia logowania.Usunięcie identyfikatora logowania numeru Identyfikacyjnego zostanie odtworzony.Identyfikator SID identyfikuje kontekstu zabezpieczeń logowania i jest unikatowe wystąpienie serwera.źródło Identyfikatora SID zależy sposób tworzenia logowania.Jeśli logowania jest tworzona z systemu Windows użytkownika lub grupy, jest podany identyfikator SID Windows źródło głównych; Identyfikator SID systemu Windows jest unikatowy w obrębie domena.Jeśli SQL Server logowania jest tworzony z certyfikat lub klucz asymetrycznego, jest przypisany identyfikator SID pochodną mieszania SHA-1 klucz publicznego.Jeśli identyfikator logowania jest tworzona jako styl starszych SQL Server logowania, który wymaga hasła, serwer generuje identyfikator SID.

Numer identyfikacyjny poziom bazy danych

Po utworzeniu bazy danych użytkownik jest przypisany identyfikator i identyfikator zabezpieczeń (SID).Numery te są widoczne w sys.database_principals Widok wykazu jako principal_id i SID.Identyfikator identyfikuje użytkownika jako zabezpieczany wewnątrz bazy danych.Po usunięciu użytkownika bazy danych jego identyfikator zostanie odtworzony.Identyfikator SID przypisany do bazy danych użytkownika jest unikatowa w bazie danych.źródło Identyfikatora SID zależy sposób tworzenia użytkowników bazy danych.Jeśli użytkownik jest tworzona z SQL Server logowania, jest to identyfikator SID logowania.Jeśli użytkownik jest tworzona z certyfikat lub klucz asymetrycznego, identyfikator SID jest pochodną mieszania SHA-1 klucz publicznego.

Maksymalna liczba użytkowników bazy danych

Maksymalna liczba użytkowników bazy danych jest określony przez rozmiar pole Identyfikator użytkownika.Wartość Identyfikatora użytkownika musi być zero lub dodatnią liczbą całkowitą.W SQL Server 2000, przechowywane jako identyfikator użytkownika smallint składający się z 16 bitów, z których jeden jest znak.Z tego powodu maksymalna liczba identyfikatorów użytkownika w SQL Server 2000 jest 215 = 32768.W SQL Server 2005 i nowsze wersje, identyfikator użytkownika jest przechowywana jako int składający się z 32 bitów, z których jeden jest znak.Te dodatkowe bity należy przypisać 231 = 2,147,483,648 numery identyfikatorów.

Identyfikatory użytkowników bazy danych są podzielone na przydzielonych wstępnie zakresów, jak pokazano w poniższej tabela.

Identyfikator programu SQL Server 2000

Identyfikator programu SQL Server 2005

Przydzielone

0

0

public

1

1

dbo

2

2

guest

3

3

INFORMATION_SCHEMA

4

4

SYSTEM_FUNCTION_SCHEMA

5 - 16383

5 - 16383

Użytkownicy, aliasy, ról aplikacji

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

Zarezerwowane

16400 - 32767

Role

16400 - 2,147,483,647

Użytkownicy, role, role aplikacji, aliasy

Rozmiar Identyfikatora użytkownika jest wzrosła z smallint (16 bitów) do int (32 bity).API, wymagających użytkownika 16-bitowy identyfikator będą zwracały nieprawidłowe wyniki, jeżeli nie przekazano użytkownika 32-bitowy identyfikator.Podczas migrowania danych i aplikacje utworzone dla SQL Server 2000 lub starszym, należy przejrzeć kod odwołania do następujących interfejsów zaniechane.

  • sysusers

  • syscacheobjects

  • sysmembers

  • sysobjects

  • syspermissions

  • sysprocesses

  • sysprotects

  • systypes

  • USER_ID

Te interfejsy wymagają identyfikatory użytkowników 16-bitowych.Nie zwracają one poprawne wyniki z nazwy użytkownika 32-bitowych.