SYSTEM_USER (Transact-SQL)
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.
Sintaxis
SYSTEM_USER
Tipos de valor devueltos
nchar
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.
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.
----------------------------------------------------------
El usuario del sistema actual es: WillisJo
(1 fila afectada)
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 AdventureWorks2008R2;
GO
CREATE TABLE 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_Tracking (Rep_id)
VALUES (151)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '5/15/98')
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '6/20/98')
INSERT Sales_Tracking (Rep_id)
VALUES (21392)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '11/03/98')
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 filas afectadas)
Vea también