SESSION_USER (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

Convenciones de sintaxis de Transact-SQL

Sintaxis

SESSION_USER  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

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 toma ningún argumento. 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 AdventureWorks2022;  
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)

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

C. Usar SESSION_USER para devolver el nombre de usuario de la sesión actual

En el siguiente ejemplo se devuelve la sesión de usuario de la sesión actual.

SELECT SESSION_USER;  

Consulte también

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Funciones del sistema (Transact-SQL)
USER (Transact-SQL)
USER_NAME (Transact-SQL)