Condividi tramite


Risolvere i problemi relativi agli utenti isolati (SQL Server)

Per accedere a un'istanza di Microsoft SQL Server, è necessario che un'entità disponga di un account di accesso di SQL Server valido. Tale account di accesso viene utilizzato nel processo di autenticazione che verifica se l'entità è autorizzata a connettersi all'istanza di SQL Server. Gli account di accesso di SQL Server in un'istanza del server sono riportati nella vista del catalogo sys.server_principals e nella vista di compatibilità sys.syslogins.

Gli account di accesso di SQL Server consentono di accedere a database singoli mediante un utente del database di cui viene eseguito il mapping all'account di accesso di SQL Server. Sono previste due eccezioni a questa regola:

  • Account Guest.

    Si tratta di un account che, se attivato nel database, consente agli account di accesso di SQL Server di cui non viene eseguito il mapping ad alcun utente del database di accedere al 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 il cui account di accesso di SQL Server corrispondente non è definito o è definito in modo errato in un'istanza del server non potrà accedere a tale istanza. Tale utente viene definito utente isolato (orfano) del database in tale istanza del server. Un utente del database può diventare isolato (orfano) se l'account di accesso di SQL Server corrispondente viene rimosso oppure dopo il ripristino di un database in un'istanza diversa di SQL Server o il collegamento del database a tale istanza. È 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 di SQL Server non può accedere a un database in cui non sia presente un utente del database corrispondente, a meno che in tale database non sia attivato guest. Per informazioni sulla creazione di un account utente di 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;

Nell'output sono elencati gli utenti e gli identificatori di sicurezza (SID) corrispondenti disponibili nel database corrente e non collegati ad alcun account di accesso di SQL Server. Per ulteriori informazioni, vedere sp_change_users_login (Transact-SQL).

[!NOTA]

Non è possibile utilizzare sp_change_users_login con account di accesso di SQL Server.

Per risolvere un utente isolato (orfano)

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

  1. Il comando seguente consente di ricollegare l'account di accesso del server specificato da <login_name> all'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 ulteriori 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 potrà quindi modificare la password dell'account di accesso <login_name> utilizzando la stored procedure sp_password, come illustrato di seguito:

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

    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]

    Non è possibile utilizzare sp_password per gli account di Microsoft Windows. L'autenticazione degli utenti che si connettono a un'istanza di SQL Server in base al corrispondente account di rete di Windows viene eseguita da Windows. Le password di tali utenti sono pertanto modificabili solo in Windows.

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

Vedere anche

Riferimento

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)