Compartir a través de


SESSION_USER (Transact-SQL)

SESSION_USER devuelve el nombre de usuario del contexto actual en la base de datos actual.

Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual).

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

Sintaxis

SESSION_USER

Tipos de valor devuelto

nvarchar(128)

Comentarios

Utilice SESSION_USER con restricciones DEFAULT en las instrucciones CREATE TABLE o ALTER TABLE, o utilícela como cualquier función estándar. SESSION_USER se puede insertar en una tabla cuando no se especifica un valor predeterminado. Esta función no tiene argumentos. SESSION_USER se puede utilizar en consultas.

Si se llama a SESSION_USER después de un cambio de contexto, SESSION_USER devolverá el nombre de usuario del contexto representado.

Ejemplos

A.Utilizar SESSION_USER para devolver el nombre de usuario de la sesión actual

En el siguiente ejemplo se declara una variable como nchar, se le asigna el valor actual de SESSION_USER y, a continuación, se imprime la variable con una descripción de texto.

DECLARE @session_usr nchar(30);
SET @session_usr = SESSION_USER;
SELECT 'This session''s current user is: '+ @session_usr;
GO

Éste es el conjunto de resultados cuando el usuario de la sesión es Surya:

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

This session's current user is: Surya

(1 row(s) affected)

B.Utilizar SESSION_USER con restricciones DEFAULT

En el siguiente ejemplo se crea una tabla que utiliza SESSION_USER como una restricción DEFAULT para el nombre de la persona que registra la recepción de un envío.

USE AdventureWorks2012;
GO
CREATE TABLE deliveries3
(
 order_id int IDENTITY(5000, 1) NOT NULL,
 cust_id  int NOT NULL,
 order_date smalldatetime NOT NULL DEFAULT GETDATE(),
 delivery_date smalldatetime NOT NULL DEFAULT 
    DATEADD(dd, 10, GETDATE()),
 received_shipment nchar(30) NOT NULL DEFAULT SESSION_USER
);
GO

Los registros agregados a la tabla se mostrarán con el nombre de usuario del usuario actual. En este ejemplo, Wanida, Sylvester y Alejandro comprueban la recepción de los envíos. Se puede simular si se cambia el contexto del usuario con EXECUTE AS.

EXECUTE AS USER = 'Wanida'
INSERT deliveries3 (cust_id)
VALUES (7510);
INSERT deliveries3 (cust_id)
VALUES (7231);
REVERT;
EXECUTE AS USER = 'Sylvester'
INSERT deliveries3 (cust_id)
VALUES (7028);
REVERT;
EXECUTE AS USER = 'Alejandro'
INSERT deliveries3 (cust_id)
VALUES (7392);
INSERT deliveries3 (cust_id)
VALUES (7452);
REVERT;
GO

La siguiente consulta selecciona toda la información de la tabla deliveries3.

SELECT order_id AS 'Order #', cust_id AS 'Customer #', 
   delivery_date AS 'When Delivered', received_shipment 
   AS 'Received By'
FROM deliveries3
ORDER BY order_id;
GO

El conjunto de resultados es el siguiente.

Order # Customer # When Delivered Received By

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

5000 7510 2005-03-16 12:02:14 Wanida

5001 7231 2005-03-16 12:02:14 Wanida

5002 7028 2005-03-16 12:02:14 Sylvester

5003 7392 2005-03-16 12:02:14 Alejandro

5004 7452 2005-03-16 12:02:14 Alejandro

(5 row(s) affected)

Vea también

Referencia

ALTER TABLE (Transact-SQL)

CREATE TABLE (SQL Server)

CURRENT_TIMESTAMP (Transact-SQL)

CURRENT_USER (Transact-SQL)

SYSTEM_USER (Transact-SQL)

Funciones del sistema (Transact-SQL)

USER (Transact-SQL)

USER_NAME (Transact-SQL)