SYSTEM_USER (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Permite insertar en una tabla un valor proporcionado por el sistema para el inicio de sesión actual cuando no se especifica ningún valor predeterminado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SYSTEM_USER  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Tipos de valor devuelto

nvarchar(128)

Comentarios

En las instrucciones CREATE TABLE y ALTER TABLE puede utilizar la función SYSTEM_USER con restricciones DEFAULT. También puede utilizarla como cualquier función estándar.

Si el nombre de usuario y el nombre de inicio de sesión con diferentes, SYSTEM_USER devuelve el nombre de inicio de sesión.

Si el usuario actual ha iniciado la sesión en SQL Server con la autenticación de Windows, SYSTEM_USER devuelve el nombre de identificación del inicio de sesión de Windows con el formato: DOMAIN\user_login_name. Sin embargo, si el usuario actual ha iniciado la sesión en SQL Server con la autenticación de SQL Server, SYSTEM_USER devuelve el nombre de identificación de inicio de sesión en SQL Server, por ejemplo WillisJo para un usuario que ha iniciado la sesión como WillisJo.

SYSTEM_USER devuelve el nombre del contexto de ejecución actual. Si se ha usado la instrucción EXECUTE AS para cambiar el contexto, SYSTEM_USER devuelve el nombre del contexto suplantado.

No se puede ejecutar como SYSTEM_USER.

Azure SQL Database: la instrucción SYSTEM_USER no admite la ejecución con un contexto de seguridad suplantado a través de EXECUTE AS.

Ejemplos

A. Usar SYSTEM_USER para devolver el nombre de usuario actual del sistema

En el siguiente ejemplo se declara una variable char, se almacena en ella el valor actual de SYSTEM_USER y, a continuación, se imprime el valor almacenado en la variable.

DECLARE @sys_usr CHAR(30);  
SET @sys_usr = SYSTEM_USER;  
SELECT 'The current system user is: '+ @sys_usr;  
GO  

El conjunto de resultados es el siguiente:

----------------------------------------------------------
The current system user is: WillisJo

(1 row(s) affected)

B. Usar SYSTEM_USER con restricciones DEFAULT

En el siguiente ejemplo se crea una tabla con SYSTEM_USER como una restricción DEFAULT para la columna 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  

En la siguiente consulta se selecciona toda la información de la tabla Sales_Tracking:

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

El conjunto de resultados es el siguiente:

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)

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

C. Usar SYSTEM_USER para devolver el nombre de usuario actual del sistema

El siguiente ejemplo devuelve el valor actual de SYSTEM_USER.

SELECT SYSTEM_USER;  

Consulte también

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
Funciones del sistema (Transact-SQL)
USER (Transact-SQL)