sp_change_users_login (Transact-SQL)
Si applica a:SQL Server
Mappe un utente di database esistente a un account di accesso di SQL Server.
Importante
Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Usare invece ALTER U edizione Standard R.
Convenzioni di sintassi Transact-SQL
Sintassi
sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ]
[ , [ @LoginName = ] 'login' ]
[ , [ @Password = ] 'password' ]
[;]
Argomenti
[ @Action= ] 'action'
Descrive l'azione che deve essere eseguita dalla procedura. action è varchar(10). l'azione può avere uno dei valori seguenti.
Valore | Descrizione |
---|---|
Auto_Fix | Collega una voce utente nella vista del catalogo di sistema sys.database_principals nel 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 verificare che sia effettivamente stato effettuato il collegamento corretto. Evitare di usare Auto_Fix in situazioni sensibili alla sicurezza. Quando si usa Auto_Fix, è necessario specificare l'utente e la password se l'account di accesso non esiste già. In caso contrario, è necessario specificare l'utente ma la password verrà ignorata. l'account di accesso deve essere NULL. l'utente deve essere un utente valido nel database corrente. Non è possibile eseguire il mapping dell'account di accesso a un altro utente. |
- Report | Elenca gli utenti e gli ID di sicurezza (SID) corrispondenti disponibili nel database corrente e non collegati ad alcun account di accesso. l'utente, l'account di accesso e la password devono essere NULL o non specificati. Per sostituire l'opzione del report con una query usando le tabelle di sistema, confrontare le voci in sys.server_prinicpals con le voci in sys.database_principals. |
Update_One | Collega l'utente specificato nel database corrente a un account di accesso di SQL Server esistente. è necessario specificare l'utente e l'account di accesso. la password deve essere NULL o non specificata. |
[ @UserNamePattern= ] 'user'
Nome di un utente nel database corrente. user è sysname, con un 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 specificando Auto_Fix. Se esiste già un account di accesso corrispondente, l'utente e l'account di accesso vengono mappati e la password viene ignorata. Se non esiste un account di accesso corrispondente, sp_change_users_login crea un nuovo account di accesso di SQL Server e assegna la password come password per il nuovo account di accesso. password è sysname e non deve essere NULL.
Importante
Usare sempre una password complessa!
Valori del codice restituito
0 (operazione completata) o 1 (operazione non riuscita)
Set di risultati
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
UserName | sysname | Nome dell'utente del database. |
UserSID | varbinary(85) | ID di sicurezza (SID) dell'utente. |
Osservazioni:
Usare sp_change_users_login per collegare un utente del database nel database corrente con un account di accesso di SQL Server. Se l'account di accesso di 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 non può essere sa e l'utente non può essere dbo, guest o un utente INFORMATION_SCHEMA.
La stored procedure sp_change_users_login non può essere utilizzata per eseguire il mapping degli utenti del database a entità, certificati o chiavi asimmetriche a livello di Windows.
sp_change_users_login non può essere usato con un account di accesso di SQL Server creato da un'entità di Windows o con un utente creato tramite CREATE U edizione Standard R WITHOUT LOGIN.
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 .
Esempi
R. Visualizzazione di un report dei mapping tra utente corrente e account di accesso
Nell'esempio seguente viene creato un report che include gli utenti del database corrente e i relativi ID di sicurezza (SID).
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 è associato a un nuovo account di accesso di SQL Server. L'utente del database MB-Sales
, sul quale inizialmente viene eseguito il mapping a un account di accesso diverso, viene eseguito il mapping 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 AdventureWorks2022;
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 usare Auto_Fix
per eseguire il mapping di un utente esistente a un account di accesso con lo stesso nome o per creare l'account di accesso Mary
di SQL Server con la password B3r12-3x$098f6
se l'account di accesso Mary
non esiste.
USE AdventureWorks2022;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO
Vedi anche
Stored procedure di sicurezza (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)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per