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

Notas

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

Éste 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 AdventureWorks;
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

Éste 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)

Vea también

Referencia

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)

Otros recursos

Permitir valores NULL
Proteger Notification Services
Valores predeterminados
Valores NULL

Ayuda e información

Obtener ayuda sobre SQL Server 2005