Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL ServerAzure
SQL Managed Instance
Azure Synapse Analytics
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:
Puoi usare la funzione SYSTEM_USER con DEFAULT vincoli nelle CREATE TABLE istruzioni 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'affermazione EXECUTE AS è stata usata per cambiare contesto, SYSTEM_USER restituisce il nome del contesto impersonato.
Non puoi EXECUTE AS fare un SYSTEM_USER.
database SQL di Azure: L'istruzione SYSTEM_USER non supporta l'esecuzione usando un contesto di sicurezza impersonato 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. Uso SYSTEM_USER con DEFAULT vincoli
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
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;