USER (Transact-SQL)

Si applica a:SQL Serverdatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsSistema di Piattaforma Analitica (PDW)Database SQL in Microsoft Fabric

Consente l'inserimento in una tabella di un valore fornito dal sistema per il nome utente di database dell'utente corrente quando non è stato specificato alcun valore predefinito.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

USER  

Tipi restituiti

nvarchar(128)

Osservazioni:

USER fornisce la stessa funzionalità della funzione USER_NAME sistema.

Usa USER con DEFAULT vincoli in entrambe le CREATE TABLE istruzioni o ALTER TABLE , oppure usa come qualsiasi funzione standard.

USER restituisce sempre il nome del contesto corrente. Quando viene chiamato dopo un'affermazione EXECUTE AS , USER restituisce il nome del contesto impersonato.

Se un principale Windows accede al database tramite l'appartenenza a un gruppo, USER restituisce il nome del principale Windows invece del nome del gruppo.

Esempi

R. Usando USER per restituire il nome utente del database

Il seguente esempio dichiara una variabile come char, le assegna il valore USER corrente di e poi stampa la variabile con una descrizione testuale.

DECLARE @usr CHAR(30)  
SET @usr = user  
SELECT 'The current user''s database username is: '+ @usr  
GO  

Il set di risultati è il seguente.

-----------------------------------------------------------------------  
The current user's database username is: dbo  
 
(1 row(s) affected)

B. Uso USER con DEFAULT vincoli

Nell'esempio seguente viene creata una tabella tramite l'utilizzo della funzione USER come vincolo DEFAULT per la colonna relativa al rappresentante di una riga di dati sulle vendite.

USE AdventureWorks2022;  
GO  
CREATE TABLE inventory22  
(  
 part_id INT IDENTITY(100, 1) NOT NULL,  
 description VARCHAR(30) NOT NULL,  
 entry_person VARCHAR(30) NOT NULL DEFAULT USER   
)  
GO  
INSERT inventory22 (description)  
VALUES ('Red pencil')  
INSERT inventory22 (description)  
VALUES ('Blue pencil')  
INSERT inventory22 (description)  
VALUES ('Green pencil')  
INSERT inventory22 (description)  
VALUES ('Black pencil')  
INSERT inventory22 (description)  
VALUES ('Yellow pencil')  
GO  

Di seguito è riportata la query per la selezione di tutte le informazioni della tabella inventory22.

SELECT * FROM inventory22 ORDER BY part_id;  
GO  

Set di risultati (si noti il valore entry-person).

part_id     description                    entry_person
----------- ------------------------------ -------------------------
100         Red pencil                     dbo
101         Blue pencil                    dbo
102         Green pencil                   dbo
103         Black pencil                   dbo
104         Yellow pencil                  dbo
 
(5 row(s) affected)

C. Usare USER in combinazione con EXECUTE AS

Nell'esempio seguente viene illustrato il funzionamento di USER se chiamata all'interno di una sessione rappresentata.

SELECT USER;  
GO  
EXECUTE AS USER = 'Mario';  
GO  
SELECT USER;  
GO  
REVERT;  
GO  
SELECT USER;  
GO  

Il set di risultati è il seguente.

DBO
Mario
DBO

Vedi anche

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
Funzioni di sicurezza (Transact-SQL)
SESSION_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
USER_NAME (Transact-SQL)