Troubleshooting Orphaned Users

Aby zalogować się do wystąpienie Microsoft SQL Server, główny zobowiązany musi mieć prawidłowy SQL Server logowania.Tego identyfikatora logowania jest używany w procesie uwierzytelnianie, które sprawdza, czy główny zobowiązany może połączyć wystąpienie SQL Server. SQL Server Logowania na serwerze wystąpienie są widoczne w sys.server_principals wykazu widoku i sys.syslogins widok zgodności.

SQL Serverlogowania do dostępu do poszczególnych baz danych przy użyciu użytkownika bazy danych, który jest mapowany do SQL Server logowania.Istnieją dwa wyjątki od tej reguły:

  • Konto Gość.

    To jest konto, który umożliwia włączenie w bazie danych, SQL Server logowania, które nie są mapowane do bazy danych użytkownikowi wprowadzenie bazy danych jako użytkownika Gość.

  • Członkostwa grup systemu Microsoft Windows.

    A SQL Server logowania utworzonych przez użytkownika systemu Windows można wprowadzić bazy danych, jeśli użytkownik systemu Windows jest element członkowski grupy systemu Windows, która jest również użytkownika w bazie danych.

Informacje o mapowaniu SQL Server logowania do bazy danych użytkownika są przechowywane w bazie danych.Zawiera nazwę użytkownika bazy danych i odpowiadający mu identyfikator SID SQL Server logowania.Uprawnienia użytkownika bazy danych są używane do autoryzacja w bazie danych.

Użytkownik bazy danych, dla których odpowiadające im SQL Server logowania jest nieokreślony lub jest niepoprawnie zdefiniowany na serwerze wystąpienie nie może zalogować się do instancji.Taki użytkownik jest nazywany użytkownika oddzielone bazy danych dla tego wystąpienie serwera.Użytkownik bazy danych może stać się osierocenie odpowiednie SQL Server logowania jest porzucane.Ponadto użytkownik bazy danych stają się oddzielony po bazy danych jest przywracane lub dołączony do innego wystąpienie SQL Server.Orphaning może się tak zdarzyć, jeśli użytkownik bazy danych jest mapowany do identyfikatora SID nie jest obecny w nowe wystąpienie serwera.

Ostrzeżenie

A SQL Server logowania nie może uzyskać dostępu do bazy danych, w którym go brakuje odpowiedniego użytkownika bazy danych chyba że Gość jest włączona w tej bazie danych.Aby uzyskać informacje dotyczące tworzenia konta użytkownika bazy danych, zobacz Utwórz użytkownika (Transact-SQL).

Aby wykryć Orphaned Users

Aby wykrywać orphaned users wykonać następujące instrukcje języka Transact-SQL:

USE <database_name>;
GO; 
sp_change_users_login @Action='Report';
GO;

Dane wyjściowe Wyświetla użytkowników i odpowiadające im identyfikatory zabezpieczeń (SID) w bieżącej bazie danych nie są powiązane z żadnym SQL Server logowania.Aby uzyskać więcej informacji, zobacz sp_change_users_login (języka Transact-SQL).

Ostrzeżenie

sp_change_users_login nie można używać z SQL Server logowania, które są tworzone na podstawie systemu Windows.

Aby rozwiązać oddzielony użytkownika

Aby rozwiązać oddzielony użytkownika, użyj następującej procedury:

  1. Następujące polecenie relinks konta logowania serwera określonego przez <login_name> określonych przez użytkownika bazy danych z <database_user>.

    USE <database_name>;
    GO
    sp_change_users_login @Action='update_one', @UserNamePattern='<database_user>', 
       @LoginName='<login_name>';
    GO
    

    Aby uzyskać więcej informacji, zobacz sp_change_users_login (języka Transact-SQL).

  2. Po uruchomieniu kodu w poprzednim kroku można uzyskać dostęp do bazy danych.Następnie użytkownik może zmieniać hasło <login_name> konto logowania za pomocą sp_password procedura składowana, jak następuje:

    USE master 
    GO
    sp_password @old=NULL, @new='password', @loginame='<login_name>';
    GO
    
    Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

    Tylko do logowania z uprawnieniami Zmiana logowania dowolnego można zmienić hasło logowania do innego użytkownika.Jednak tylko członkowie sysadmin roli można modyfikować hasła sysadmin członków roli.

    Ostrzeżenie

    sp_password nie może być używany dla Microsoft kont systemu Windows.Użytkownicy łączący się z wystąpienie SQL Server za pośrednictwem sieci Windows konta są uwierzytelniane przez system Windows. Dlatego haseł można zmienić tylko w systemie Windows.

    Aby uzyskać więcej informacji, zobacz sp_password (języka Transact-SQL).