Udostępnij za pośrednictwem


SIDs and IDs

Jeśli jesteś pisania kodu, który współdziała z SQL Server aparat, należy pamiętać o dwóch liczb, które są używane jako reprezentacji wewnętrznej głównej. Każdy podmiot ma identyfikator i identyfikator zabezpieczeń (SID).Znaczenie i urządzenie źródłowe z tych numerów zależą od sposobu utworzenia głównej i czy jest obiektem serwera lub obiektem bazy danych.

Numer identyfikacyjny poziom serwera

Gdy SQL Server tworzony jest identyfikator logowania, jest przypisany identyfikator i identyfikator SID. Są one widoczne w widoku wykazu sys.server_principals principal_id i identyfikator SID.Identyfikator (principal_id) określa identyfikator logowania jak zabezpieczany w obrębie serwera.Jest przypisywany przez SQL Server Podczas tworzenia logowania. Jeśli nazwa logowania zostanie usunięty, jego numer identyfikacyjny zostanie ponownie wykorzystany.Identyfikator SID identyfikuje w kontekście zabezpieczeń logowania i jest unikatowe w obrębie wystąpienie serwera.Źródłowy identyfikator SID zależy od tego, jak utworzyć identyfikator logowania.Jeśli identyfikator logowania został utworzony na podstawie użytkownika lub grupy użytkowników systemu Windows, jest podany identyfikator SID Windows głównej urządzenie źródłowe, identyfikatory zabezpieczeń systemu Windows jest unikatowy w obrębie domena.Jeśli SQL Server Identyfikator logowania jest tworzona na podstawie certyfikat lub klucz asymetrycznego, zostanie on przypisany identyfikator SID z mieszania SHA-1 klucz publicznego. Jeśli identyfikator logowania jest tworzona jako styl starsza wersja SQL Server Identyfikator logowania, który wymaga podania hasła, serwer generuje identyfikator SID.

Numer identyfikacyjny poziom bazy danych

Podczas tworzenia użytkownika bazy danych jest przypisany identyfikator i identyfikator zabezpieczeń (SID).Numery te są widoczne w widoku wykazu sys.database_principals principal_id i identyfikator SID.Identyfikator identyfikuje użytkownika jako zabezpieczany znajdujący się w bazie danych.Jeśli użytkownik bazy danych zostanie usunięty, jego identyfikator zostanie ponownie wykorzystany.Identyfikator SID przypisany do bazy danych użytkownika jest unikatowa w bazie danych.Źródłowy identyfikator SID zależy od tego, jak użytkownik bazy danych jest tworzone.Jeśli użytkownik został utworzony na podstawie SQL Server Identyfikator logowania, znajduje identyfikator SID logowania. Jeśli użytkownik został utworzony na podstawie certyfikat lub klucz asymetrycznego, identyfikator SID jest określany na podstawie wartości mieszania SHA-1 klucz publicznego.

Maksymalna liczba użytkowników bazy danych

Maksymalna liczba użytkowników bazy danych zależy od rozmiaru pole Identyfikator użytkownika.Wartość IDENTYFIKATORA użytkownika musi być zero lub dodatnią liczbą całkowitą.W SQL Server 2000, identyfikator jest przechowywana jako użytkownik smallint składa się z 16 bitów, z których jedna jest znak. Z tego powodu maksymalną liczbę nazw użytkowników w SQL Server 2000 jest 215 = 32768.W SQL Server 2005 i nowszych wersji, nazwa użytkownika jest przechowywana jako int składa się z 32 bitów, z których jedna jest znak. Dodatkowe bity te umożliwiają przypisywanie 231 = 2,147,483,648 Numery identyfikacyjne.

Identyfikatory użytkowników bazy danych są podzielone na przydzielonych wstępnie zakresów, jak zostało to przedstawione w poniższej tabela.

Identyfikator SQL Server 2000

Identyfikator SQL Server 2005

Przydzielone do

0

0

publiczne

1

1

dbo

2

2

Gość

3

3

INFORMATION_SCHEMA

4

4

SYSTEM_FUNCTION_SCHEMA

5 - 16383

5 - 16383

Użytkownicy, aliasy, role aplikacji

16384

16384

Duński (Dania)

16385

16385

Malediwski (Malediwy)

16386

16386

Divehi_90_

16387

16387

Holenderski (Holandia)

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żytkowników, ról, role aplikacji, aliasy

Rozmiar IDENTYFIKATORA użytkownika jest zwiększany z smallint (16 bitów) do int (32 bity). Nazwy interfejsów API, która wymaga od użytkownika 16-bitowy identyfikator zwróci niepoprawne wyniki, jeśli przekazany użytkownika 32-bitowych.Kiedy dokonywana jest migracja dane i aplikacje utworzone dla SQL Server 2000 lub starszy, należy przejrzeć kod odwołania do następujących interfejsów przestarzałe.

  • Jednak przy użyciu instrukcja ALTER autoryzacja do zmiany własności można określić alternatywne właściciela.

  • sp_table_constraints_rowset2

  • sys.types (języka Transact-SQL)

  • Zawiera wiersz dla każdego systemu i typ zdefiniowany przez użytkownika.

  • Nazwa tego typu.

  • sp_usertypes_rowset_rmt

  • Jest unikatowe w schemacie.

  • Identyfikator schematu, do której należy dany typ.

  • USER_ID

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