SYSTEM_USER (Transact-SQL)
Se aplica a: SQL Server Azure SQL Instancia administrada Azure Synapse Analytics Analytics 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
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
Este es el conjunto de resultados.
----------------------------------------------------------
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
Este es el conjunto de resultados.
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)