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.
Convenzioni 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.Nota 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
Cronologia modifiche
Versione | Cronologia |
---|---|
12 dicembre 2006 |
|