Compartir a través de


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.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

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)