Condividi tramite


Risolvere i problemi relativi agli utenti isolati (SQL Server)

Per accedere a un'istanza di Microsoft SQL Server, un'entità deve avere un account di accesso valido SQL Server. Questo account di accesso viene usato nel processo di autenticazione che verifica se l'entità è consentita per connettersi all'istanza di SQL Server. Gli account di accesso SQL Server in un'istanza del server sono visibili nella visualizzazione catalogo sys.server_principals e nella visualizzazione di compatibilità sys.syslogins.

SQL Server accedere a singoli database usando un utente di database mappato all'account di accesso SQL Server. Sono previste due eccezioni a questa regola:

  • Account Guest.

    Si tratta di un account che, se abilitato nel database, consente di SQL Server account di accesso non mappati a un utente del database per immettere il database come utente guest.

  • Appartenenza ai gruppi di Microsoft Windows.

    Un account di accesso di SQL Server creato da un utente di Windows può accedere a un database se tale utente di Windows è membro di un gruppo di Windows a sua volta utente del database.

Le informazioni relative al mapping di un account di accesso di SQL Server a un utente del database sono archiviate all'interno del database. Includono il nome dell'utente del database e il SID dell'account di accesso di SQL Server corrispondente. Le autorizzazioni di tale utente del database vengono utilizzate come autorizzazioni nel database.

Un utente del database per il quale l'account di accesso SQL Server corrispondente non è definito o viene definito in modo errato in un'istanza del server non può accedere all'istanza. Questo utente viene definito utente orfano del database nell'istanza del server. Un utente del database può diventare orfano se l'account di accesso di SQL Server corrispondente viene eliminato. Inoltre, un utente del database può diventare orfano dopo che un database viene ripristinato o collegato a un'istanza diversa di SQL Server. È possibile che si verifichi l'isolamento se l'utente del database è sottoposto a mapping a un SID non presente nella nuova istanza del server.

Nota

Un account di accesso SQL Server non può accedere a un database in cui manca un utente del database corrispondente, a meno che non sia abilitato un guest nel database. Per informazioni sulla creazione di un account utente del database, vedere CREATE USER (Transact-SQL).

Per rilevare gli utenti isolati (orfani)

Per rilevare gli utenti isolati (orfani), eseguire le istruzioni Transact-SQL seguenti:

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

L'output elenca gli utenti e i corrispondenti identificatori di sicurezza (SID) nel database corrente che non sono collegati a alcun account di accesso SQL Server. Per altre informazioni, vedere sp_change_users_login (Transact-SQL).

Nota

sp_change_users_login non può essere usato con gli account di accesso SQL Server creati da Windows.

Per risolvere un utente isolato (orfano)

Per risolvere un utente isolato (orfano), eseguire la procedura seguente:

  1. Il comando seguente collega nuovamente l'account di accesso del server specificato da <login_name con l'utente del database specificato da database_user><>.

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

    Per altre informazioni, vedere sp_change_users_login (Transact-SQL).

  2. Al termine dell'esecuzione del codice riportato nel passaggio precedente, l'utente sarà in grado di accedere al database. L'utente può quindi modificare la password dell'account di accesso login_name< usando la stored procedure sp_password>, come indicato di seguito:

    USE master   
    GO  
    sp_password @old=NULL, @new='password', @loginame='<login_name>';  
    GO  
    

    Importante

    Solo gli account di accesso con autorizzazione ALTER ANY LOGIN possono modificare la password dell'account di accesso di un altro utente. Solo i membri del ruolo sysadmin possono tuttavia modificare le password dei membri del ruolo sysadmin .

    Nota

    sp_password non può essere usato per gli account Microsoft Windows. Gli utenti che si connettono a un'istanza di SQL Server tramite l'account di rete Windows vengono autenticati da Windows. Pertanto, le password possono essere modificate solo in Windows.

    Per altre informazioni, vedere sp_password (Transact-SQL).

Vedere anche

CREATE USER (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_change_users_login (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_grantlogin (Transact-SQL)
sp_password (Transact-SQL)
sys.sysusers (Transact-SQL)
sys.syslogins (Transact-SQL)