SESSION_USER (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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
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
Este es el conjunto de resultados.
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)