SYSTEM_USER (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)
Consente di inserire in una tabella un valore fornito dal sistema per l'account di accesso corrente quando non è specificato alcun valore predefinito.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
SYSTEM_USER
Tipi restituiti
nvarchar(128)
Osservazioni:
È possibile utilizzare la funzione SYSTEM_USER in combinazione con i vincoli DEFAULT nelle istruzioni CREATE TABLE e ALTER TABLE, nonché come qualsiasi funzione standard.
Se il nome utente e il nome dell'account di accesso sono diversi, SYSTEM_USER restituisce il nome dell'account di accesso.
Se l'utente corrente è connesso a SQL Server tramite l'autenticazione di Windows, SYSTEM_USER restituisce il nome di identificazione dell'account di accesso di Windows nel formato: DOMAIN\user_login_name. Se l'utente invece è connesso a SQL Server tramite l'autenticazione di SQL Server, SYSTEM_USER restituisce il nome dell'identificazione dell'account di accesso di SQL Server, ad esempio WillisJo
per un utente connesso come WillisJo
.
SYSTEM_USER restituisce il nome del contesto di esecuzione corrente. Se l'istruzione EXECUTE AS è stata utilizzata per cambiare contesto, SYSTEM_USER restituirà il nome del contesto rappresentato.
Non è possibile usare EXECUTE AS per SYSTEM_USER.
database SQL di Azure: l'istruzione SYSTEM_USER non supporta l'esecuzione usando un contesto di sicurezza rappresentato tramite EXECUTE AS.
Esempi
R. Utilizzo di SYSTEM_USER per recuperare il nome utente di sistema corrente
Nell'esempio seguente viene dichiarata una variabile char
, il valore corrente di SYSTEM_USER
viene archiviato nella variabile, quindi viene visualizzato il valore archiviato nella variabile.
DECLARE @sys_usr CHAR(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
GO
Il set di risultati è il seguente.
----------------------------------------------------------
The current system user is: WillisJo
(1 row(s) affected)
B. Utilizzo di SYSTEM_USER con vincoli DEFAULT
Nell'esempio seguente viene creata una tabella con SYSTEM_USER
come vincolo DEFAULT
per la colonna SRep_tracking_user
.
USE AdventureWorks2022;
GO
CREATE TABLE Sales.Sales_Tracking
(
Territory_id INT IDENTITY(2000, 1) NOT NULL,
Rep_id INT NOT NULL,
Last_sale DATETIME NOT NULL DEFAULT GETDATE(),
SRep_tracking_user VARCHAR(30) NOT NULL DEFAULT SYSTEM_USER
);
GO
INSERT Sales.Sales_Tracking (Rep_id)
VALUES (151);
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '19980515');
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '19980620');
INSERT Sales.Sales_Tracking (Rep_id)
VALUES (21392);
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '19981130');
GO
La query seguente consente di selezionare tutte le informazioni della tabella Sales_Tracking
.
SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO
Il set di risultati è il seguente.
Territory_id Rep_id Last_sale SRep_tracking_user
----------- ------ -------------------- ------------------
2000 151 Mar 4 1998 10:36AM ArvinDak
2001 293 May 15 1998 12:00AM ArvinDak
2003 21392 Mar 4 1998 10:36AM ArvinDak
2004 24283 Nov 3 1998 12:00AM ArvinDak
2002 27882 Jun 20 1998 12:00AM ArvinDak
(5 row(s) affected)
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)
C. Utilizzo di SYSTEM_USER per recuperare il nome utente di sistema corrente
L'esempio seguente restituisce il valore corrente di SYSTEM_USER
.
SELECT SYSTEM_USER;
Vedi anche
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
Funzioni di sistema (Transact-SQL)
USER (Transact-SQL)