sp_addlogin (Transact-SQL)
Crea un nuovo account di accesso di SQL Server che consente a un utente di connettersi a un'istanza di SQL Server utilizzando l'autenticazione di SQL Server.
Importante |
---|
Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare CREATE LOGIN in alternativa. |
Nota sulla protezione |
---|
Se possibile, utilizzare l'autenticazione di Windows. |
Sintassi
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt= ] 'encryption_option' ]
Argomenti
[ @loginame = ] 'login'
Nome dell'account di accesso. login è di tipo sysname e non prevede alcun valore predefinito.[ @passwd = ] 'password'
Password dell'account di accesso. password è di tipo sysname e il valore predefinito è NULL.Nota sulla protezione Non utilizzare una password vuota. Utilizzare una password complessa.
[ @defdb = ] 'database'
Database predefinito dell'account di accesso, ovvero il primo database a cui viene connesso l'account dopo l'accesso. database è di tipo sysname e il valore predefinito è master.[ @deflanguage = ] 'language'
Lingua predefinita dell'account di accesso. language è di tipo sysname e il valore predefinito è NULL. Se non si specifica language, il valore predefinito di language per il nuovo account di accesso viene impostato sulla lingua predefinita corrente del server.[ @sid = ] 'sid'
ID di protezione (SID, Security Identification Number). sid è di tipo varbinary(16) e il valore predefinito è NULL. Se sid è NULL, il sistema genera automaticamente un ID di protezione (SID) per il nuovo account di accesso. Nonostante venga utilizzato il tipo di dati varbinary, la lunghezza dei valori diversi da NULL deve essere esattamente pari a 16 byte. Tali valori inoltre non devono essere esistenti. L'impostazione del parametro sid risulta utile, ad esempio, per la creazione di script o il trasferimento di account di accesso di SQL Server tra server diversi se si desidera che a tali account rimanga sempre associato lo stesso SID.[ @encryptopt = ] 'encryption_option'
Specifica se la password viene passata in forma non crittografata o come hash della password non crittografata. Si noti che non viene applicata alcuna crittografia. Le parole "crittografia" ed "encryption" vengono utilizzate in questa descrizione per compatibilità con le versioni precedenti. Se la password viene passata in forma non crittografata, per la password viene eseguito l'hashing. Il valore hash viene archiviato. encryption_option è di tipo varchar(20). I possibili valori sono i seguenti.Valore
Descrizione
NULL
La password viene passata in forma non crittografata. Impostazione predefinita.
skip_encryption
Per la password è già stato eseguito l'hashing. Motore di database deve archiviare il valore senza ripetere l'hashing.
skip_encryption_old
Per la password specificata è stato eseguito l'hashing con una versione precedente di SQL Server. Motore di database deve archiviare il valore senza ripetere l'hashing. Questa opzione è disponibile solo in funzione delle operazioni di aggiornamento.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Osservazioni
I nomi degli account di accesso di SQL Server possono essere composti da 1 a 128 caratteri, inclusi lettere, simboli e numeri. I nomi degli account di accesso non possono contenere una barra rovesciata (\), corrispondere a un nome di account di accesso riservato come sa o public, essere già esistenti oppure essere NULL o una stringa vuota ('').
Se viene specificato il nome di un database predefinito, è possibile connettersi a tale database senza eseguire l'istruzione USE. Tuttavia, non è possibile utilizzare il database predefinito fino a quando il proprietario non concede l'accesso a tale database tramite la stored procedure sp_adduser, sp_addrolemember o sp_addrole.
Il numero SID è un GUID che identificherà in modo univoco l'account di accesso nel server.
Se si modifica la lingua predefinita del server non viene modificata la lingua predefinita degli account di accesso esistenti. Per modificare la lingua predefinita del server, utilizzare sp_configure.
L'utilizzo di skip_encryption per evitare l'hashing della password può essere utile se l'hashing della password è già stato eseguito al momento dell'aggiunta dell'account di accesso in SQL Server. Se l'hashing della password è già stato eseguito in una versione precedente di SQL Server, utilizzare skip_encryption_old.
La stored procedure sp_addlogin non può essere eseguita in una transazione definita dall'utente.
Nella tabella seguente sono elencate varie stored procedure utilizzate in combinazione con sp_addlogin.
Stored procedure |
Descrizione |
---|---|
Aggiunge un utente o un gruppo di Windows. |
|
Modifica la password di un utente. |
|
Modifica il database predefinito di un utente. |
|
Modifica la lingua predefinita di un utente. |
Autorizzazioni
È richiesta l'autorizzazione ALTER ANY LOGIN.
Esempi
A. Creazione di un account di accesso di SQL Server
Nell'esempio seguente viene creato un account di accesso di SQL Server per l'utente Victoria con la password B1r12-36, senza specificare un database predefinito.
EXEC sp_addlogin 'Victoria', 'B1r12-36';
GO
B. Creazione di un account di accesso di SQL Server con un database predefinito
Nell'esempio seguente viene creato un account di accesso di SQL Server per l'utente Albert con la password B5432-3M6 e il database predefinito corporate.
EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';
GO
C. Creazione di un account di accesso di SQL Server con una diversa lingua predefinita
Nell'esempio seguente viene creato un account di accesso di SQL Server per l'utente TzTodorov con la password 709hLKH7chjfwv, il database predefinito AdventureWorks e la lingua predefinita Bulgarian.
EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks', N'български'
D. Creazione di un account di accesso di SQL Server con un SID specifico
Nell'esempio seguente viene creato un account di accesso di SQL Server per l'utente Michael, con la password B548bmM%f6, il database predefinito AdventureWorks, la lingua predefinita us_english e il SID 0x0123456789ABCDEF0123456789ABCDEF.
EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF