Condividi tramite


CREATE USER (Transact-SQL)

Aggiunge un utente al database corrente.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

CREATE USER user_name 
    [ { { FOR | FROM }
      { 
        LOGIN login_name 
        | CERTIFICATE cert_name 
        | ASYMMETRIC KEY asym_key_name
      } 
      | WITHOUT LOGIN
    ] 
    [ WITH DEFAULT_SCHEMA = schema_name ]

Argomenti

  • user_name
    Specifica il nome in base al quale l'utente viene identificato nel database. user_name è di tipo sysname. Questo valore può contenere al massimo 128 caratteri.

  • LOGIN login_name
    Specifica l'account di accesso di SQL Server per cui viene creato l'utente del database. login_name deve essere un account di accesso valido nel server. Quando questo account di accesso di SQL Server accede al database, acquisisce il nome e l'ID dell'utente del database creato.

  • CERTIFICATE cert_name
    Specifica il certificato per cui viene creato l'utente del database.

  • ASYMMETRIC KEY asym_key_name
    Specifica la chiave asimmetrica per cui viene creato l'utente del database.

  • WITH DEFAULT_SCHEMA **=**schema_name
    Specifica il primo schema in cui il server eseguirà una ricerca durante la risoluzione dei nomi di oggetti per l'utente del database.

  • WITHOUT LOGIN
    Specifica che l'utente non deve essere mappato a un account di accesso esistente.

Osservazioni

Se l'argomento FOR LOGIN viene omesso, il nuovo utente del database verrà mappato all'account di accesso di SQL Server con lo stesso nome.

Se DEFAULT_SCHEMA non viene definito, l'utente del database utilizzerà lo schema dbo come schema predefinito. È possibile impostare DEFAULT_SCHEMA su uno schema non presente nel database. DEFAULT_SCHEMA può inoltre essere impostato prima della creazione dello schema a cui punta. Non è possibile specificare DEFAULT_SCHEMA quando si crea un utente mappato a un gruppo di Windows, a un certificato o a una chiave asimmetrica.

Nota importanteImportante

Il valore di DEFAULT_SCHEMA viene ignorato se l'utente è un membro del ruolo predefinito del server sysadmin. Tutti i membri del ruolo predefinito del server sysadmin dispongono di uno schema predefinito di dbo.

La clausola WITHOUT LOGIN crea un utente non mappato a un account di accesso di SQL Server. Tale utente può connettersi ad altri database come guest.

I nomi di utenti mappati ad account di accesso di SQL Server, certificati o chiavi simmetriche non possono contenere il carattere barra rovesciata (\).

Non è possibile utilizzare CREATE USER per creare un utente guest, in quanto l'utente guest è già presente in ogni database. Per abilitare l'utente guest, concedere a tale utente l'autorizzazione CONNECT nel modo seguente:

GRANT CONNECT TO guest;
GO

Le informazioni sugli utenti del database sono visibili nella vista del catalogo sys.database_principals.

Nota di attenzioneAttenzione

A partire da SQL Server 2005, il funzionamento degli schemi è stato modificato. È pertanto possibile che il codice in cui gli schemi vengono considerati equivalenti agli utenti del database non restituisca risultati corretti. Non utilizzare le viste del catalogo delle versioni precedenti, inclusa sysobjects, nei database in cui sia già stata utilizzata una delle istruzioni DDL seguenti: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. In tali database è invece necessario utilizzare le nuove viste del catalogo. Le nuove viste del catalogo prendono in considerazione la separazione tra entità e schemi introdotta in SQL Server 2005. Per ulteriori informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).

Autorizzazioni

È richiesta l'autorizzazione ALTER ANY USER per il database.

Esempi

A. Creazione di un utente del database

Nell'esempio seguente viene innanzitutto creato un account di accesso al server denominato AbolrousHazem con una password, quindi viene creato il corrispondente utente del database AbolrousHazem in AdventureWorks.

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 

B. Creazione di un utente del database con un schema predefinito

Nell'esempio seguente viene innanzitutto creato un account di accesso al server denominato WanidaBenshoof con una password, quindi viene creato il corrispondente utente del database Wanida con lo schema predefinito Marketing.

CREATE LOGIN WanidaBenshoof 
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks;
CREATE USER Wanida FOR LOGIN WanidaBenshoof 
    WITH DEFAULT_SCHEMA = Marketing;
GO

C. Creazione di un utente del database da un certificato

Nell'esempio seguente viene creato un utente del database JinghaoLiu dal certificato CarnationProduction50.

USE AdventureWorks;
CREATE CERTIFICATE CarnationProduction50
    WITH SUBJECT = 'Carnation Production Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO 

D. Creating e utilizzo di un utente senza un accesso

Nell'esempio seguente viene descritto come creare l'utente di database CustomApp senza mapping di un accesso SQL Server. Nell'esempio viene concessa l'autorizzazioneadventure-works\tengiz0 di un utente per rappresentare l'utente CustomApp.

USE AdventureWorks ;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;
GO 

Per utilizzare le credenziali di CustomApp, l'utente adventure-works\tengiz0 esegue la seguente istruzione.

EXECUTE AS USER = 'CustomApp' ;
GO

Per ripristinare le credenziali adventure-works\tengiz0, l'utente esegue la seguente istruzione.

REVERT ;
GO

Cronologia modifiche

Aggiornamento del contenuto

Aggiunta dell'esempio D.