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.