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.

Se aplica a: SQL Server (SQL Server 2008 a través de la versión actual).

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

SYSTEM_USER

Tipos de valor devuelto

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.

----------------------------------------------------------

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 AdventureWorks2012;
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)

Vea también

Referencia

ALTER TABLE (Transact-SQL)

CREATE TABLE (SQL Server)

CURRENT_TIMESTAMP (Transact-SQL)

CURRENT_USER (Transact-SQL)

SESSION_USER (Transact-SQL)

Funciones del sistema (Transact-SQL)

USER (Transact-SQL)