sp_addlogin (Transact-SQL)

Si applica a: SQL Server

Crea un nuovo account di accesso di SQL Server che consente a un utente di connettersi a un'istanza di SQL Server usando l'autenticazione 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 CREATE LOGIN .

Importante

Se possibile, usare l'autenticazione di Windows.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_addlogin
    [ @loginame = ] N'loginame'
    [ , [ @passwd = ] N'passwd' ]
    [ , [ @defdb = ] N'defdb' ]
    [ , [ @deflanguage = ] N'deflanguage' ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt = ] 'encryptopt' ]
[ ; ]

Argomenti

[ @loginame = ] N'loginame'

Nome dell'account di accesso. @loginame è sysname, senza impostazione predefinita.

[ @passwd = ] N'passwd'

Password di accesso di . @passwd è sysname, con il valore predefinito NULL.

Importante

Non usare una password vuota. Usare una password complessa.

[ @defdb = ] N'defdb'

Database predefinito dell'account di accesso ,ovvero il database a cui è connesso l'account di accesso dopo l'accesso. @defdb è sysname, con il valore predefinito master.

[ @deflanguage = ] N'deflanguage'

Lingua predefinita dell'account di accesso. @deflanguage è sysname, con un valore predefinito .NULL Se non viene specificato @deflanguage, il @deflanguage predefinito del nuovo account di accesso viene impostato sulla lingua predefinita corrente del server.

[ @sid = ] sid

Numero di identificazione di sicurezza (SID). @sid è varbinary(16), con il valore predefinito NULL. Se @sid è NULL, il sistema genera un SID per il nuovo account di accesso. Nonostante l'uso di un tipo di dati varbinary , i valori diversi da NULL devono essere esattamente di 16 byte e non possono esistere già. Specificare @sid è utile, ad esempio, quando si esegue lo script o si spostano account di accesso di SQL Server da un server a un altro e si vuole che gli account di accesso abbiano lo stesso SID in server diversi.

[ @encryptopt = ] 'encryptopt'

Specifica se la password viene passata in forma non crittografata o come hash della password non crittografata. Non viene eseguita alcuna crittografia. Le parole "crittografia" ed "encryption" vengono utilizzate in questa descrizione per compatibilità con le versioni precedenti. Se viene passata una password di testo non crittografato, viene eseguito l'hashing. Il valore hash viene archiviato. @encryptopt è varchar(20)e può essere uno dei valori seguenti.

valore Descrizione
NULL (predefinito) La password viene passata in forma non crittografata.
skip_encryption Per la password è già stato eseguito l'hashing. Il motore di database deve archiviare il valore senza eseguirne di nuovo ilhashing.
skip_encryption_old La password fornita è stata sottoposto a hashing da una versione precedente di SQL Server. Il motore di database deve archiviare il valore senza eseguirne di nuovo ilhashing. Questa opzione è disponibile solo in funzione delle operazioni di aggiornamento.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

Gli account di accesso di SQL Server possono contenere da 1 a 128 caratteri, inclusi lettere, simboli e numeri. Gli account di accesso non possono contenere una barra rovesciata (\); essere un nome di accesso riservato, ad esempio sa o pubblico, oppure essere NULL o una stringa vuota.

Se viene specificato il nome di un database predefinito, è possibile connettersi al database specificato senza eseguire l'istruzione USE . Tuttavia, non è possibile usare il database predefinito finché non viene concesso l'accesso a tale database dal proprietario del database (usando sp_adduser, sp_addrolemember) o sp_addrole.

Il numero SID è un GUID che identifica in modo univoco l'account di accesso nel server.

La modifica della lingua predefinita del server non modifica la lingua predefinita degli account di accesso esistenti. Per modificare la lingua predefinita del server, usare sp_configure.

L'uso skip_encryption di per eliminare l'hash delle password è utile se la password è già sottoposta a hash quando l'account di accesso viene aggiunto a SQL Server. Se la password è stata hashata da una versione precedente di SQL Server, usare skip_encryption_old.

sp_addlogin non può essere eseguito all'interno di una transazione definita dall'utente.

La tabella seguente illustra diverse stored procedure usate con sp_addlogin.

Stored procedure Descrizione
sp_grantlogin Aggiunge un utente o un gruppo di Windows.
sp_password Modifica la password di un utente.
sp_defaultdb Modifica il database predefinito di un utente.
sp_defaultlanguage Modifica la lingua predefinita di un utente.

Autorizzazioni

È richiesta l'autorizzazione ALTER ANY LOGIN.

Esempi

R. Creare un account di accesso di SQL Server

Nell'esempio seguente viene creato un account di accesso di SQL Server per l'utente Victoria, con una password di B1r12-36, senza specificare un database predefinito.

EXEC sp_addlogin 'Victoria', 'B1r12-36';
GO

B. Creare 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 una password di B5432-3M6 e un database predefinito di corporate.

EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';
GO

C. Creare un account di accesso di SQL Server con una lingua predefinita diversa

Nell'esempio seguente viene creato un account di accesso di SQL Server per l'utente TzTodorov, con una password di 709hLKH7chjfwv, un database predefinito di AdventureWorks2022e una lingua predefinita di Bulgarian.

EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks2022', N'български'

D. Creare 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 una password di B548bmM%f6, un database predefinito di AdventureWorks2022, una lingua predefinita di us_englishe un SID di 0x0123456789ABCDEF0123456789ABCDEF.

EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks2022', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF