sp_change_users_login (Transact-SQL)

Data aggiornamento: 12 dicembre 2006

Mappa un utente esistente del database a un account di accesso di SQL Server.

[!NOTA] Non è possibile utilizzare sp_change_users_login con un account di accesso di SQL Server creato da un'entità di Windows o con un utente creato mediante CREATE USER WITHOUT LOGIN.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_change_users_login [ @Action = ] 'action' 
    [ , [ @UserNamePattern = ] 'user' ] 
    [ , [ @LoginName = ] 'login' ] 
        [ , [ @Password = ] 'password' ]

Argomenti

  • [ @Action= ] 'action'
    Descrizione l'azione che la procedura deve eseguire. action è di tipo varchar(10). I possibili valori di action sono i seguenti.

    Valore Descrizione

    Auto_Fix

    Collega una voce utente presente nella vista del catalogo di sistema sys.database_principals del database corrente a un account di accesso di SQL Server con lo stesso nome. Se non esiste un account di accesso con lo stesso nome, ne verrà creato uno. Esaminare il risultato dell'istruzione Auto_Fix per confermare che è stato effettivamente stabilito il collegamento corretto. Evitare l'utilizzo di Auto_Fix in situazioni problematiche in relazione alla protezione.

    In caso di utilizzo di Auto_Fix, è necessario specificare user e password se l'account di accesso non esiste. In caso contrario, è necessario specificare user, mentre password verrà ignorato. login deve essere NULL. user deve essere un utente valido nel database corrente. L'account di accesso non può essere mappato a un altro utente.

    Report

    Elenca gli utenti e gli ID di protezione (SID) corrispondenti disponibili nel database corrente e non collegati ad alcun account di accesso. user, login e password devono essere NULL oppure devono essere omessi.

    Update_One

    Collega l'utente definito con user nel database corrente a un account di accesso di SQL Server esistente definito con login. user e login devono essere specificati. password deve essere NULL oppure deve essere omesso.

  • [ @UserNamePattern= ] 'user'
    Nome di un utente nel database corrente. user è di tipo sysname e il valore predefinito è NULL.
  • [ @LoginName= ] 'login'
    Nome di un account di accesso di SQL Server. login è di tipo sysname e il valore predefinito è NULL.
  • [ @Password= ] 'password'
    Password assegnata a un nuovo account di accesso di SQL Server creato tramite Auto_Fix. Se un account di accesso corrispondente esiste già, l'utente e l'account di accesso vengono mappati, mentre l'opzione password viene ignorata. Se un account di accesso corrispondente non esiste, la stored procedure sp_change_users_login crea un nuovo account di accesso di SQL Server e assegna l'opzione password come password del nuovo account di accesso. password è di tipo sysname e non deve essere NULL.

    ms174378.security(it-it,SQL.90).gifNota sulla protezione:
    Utilizzare una password complessa. Per ulteriori informazioni, vedere Password complesse.

Set di risultati

Nome colonna Tipo di dati Descrizione

UserName

sysname

Nome dell'utente del database.

UserSID

varbinary(85)

Identificatore di protezione (SID) dell'utente.

Osservazioni

[!NOTA] La stored procedure sp_change_users_login non può essere utilizzata per mappare utenti del database a entità, certificati o chiavi asimmetriche a livello di Windows.

Utilizzare sp_change_users_login per collegare un utente del database nel database corrente a un account di accesso di SQL Server. Se l'account di accesso per un utente è stato modificato, utilizzare sp_change_users_login per collegare l'utente al nuovo account di accesso senza perdere le autorizzazioni corrispondenti. Il nuovo account di accesso definito con login non può essere sa e l'utente definito con user non può essere dbo, guest o un utente INFORMATION_SCHEMA.

La stored procedure sp_change_users_login non può essere eseguita in una transazione definita dall'utente.

Autorizzazioni

Richiede l'appartenenza al ruolo predefinito del database db_owner. Solo i membri del ruolo predefinito del server sysadmin possono specificare l'opzione Auto_Fix.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Esempi

A. Visualizzazione di un report dei mapping correnti tra utenti e account di accesso

Nell'esempio seguente viene creato un report che include gli utenti del database corrente non collegati ad alcun account di accesso e gli ID di protezione (SID) corrispondenti.

EXEC sp_change_users_login 'Report';

B. Mapping tra un utente del database e un nuovo account di accesso di SQL Server

Nell'esempio seguente un utente del database viene associato a un nuovo account di accesso di SQL Server. L'utente del database MB-Sales, inizialmente mappato a un account di accesso diverso, viene mappato all'account di accesso MaryB.

--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO

C. Mapping automatico tra un utente e un account di accesso e creazione di un nuovo account di accesso se necessario

Nell'esempio seguente viene illustrato come utilizzare l'opzione Auto_Fix per eseguire il mapping tra un utente esistente e un account di accesso con lo stesso nome oppure per creare l'account di accesso di SQL Server denominato Mary associato alla password B3r12-3x$098f6 se l'account di accesso Mary non esiste.

USE AdventureWorks;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO

Vedere anche

Riferimento

Stored procedure di protezione (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (Transact-SQL)
sp_helplogins (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
sys.database_principals (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Contenuto modificato:
  • Aggiunta di un chiarimento alla nota sull'utilizzo di sp_change_users_login.