Compartir a través de


CURRENT_USER (Transact-SQL)

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Analítica (PDW)Base de datos SQL en Microsoft Fabric

Esta función devuelve el nombre de usuario actual. Esta función es equivalente a USER_NAME().

Convenciones de sintaxis de Transact-SQL

Sintaxis

CURRENT_USER  

Tipos de valores devueltos

sysname

Observaciones

CURRENT_USER devuelve el nombre del contexto de seguridad actual. Si CURRENT_USER se ejecuta después de una llamada a EXECUTE AS, cambia el contexto; CURRENT_USER devolverá el nombre del contexto suplantado. Si una entidad de seguridad de Windows ha tenido acceso a la base de datos en forma de miembro de un grupo, CURRENT_USER devolverá el nombre de la entidad de seguridad de Windows en vez del nombre del grupo.

Vea SUSER_NAME (Transact-SQL) y SYSTEM_USER (Transact-SQL) para obtener información sobre cómo devolver el inicio de sesión del usuario actual.

Ejemplos

A. Usar CURRENT_USER para devolver el nombre del usuario actual

En este siguiente se devuelve el nombre del usuario actual.

SELECT CURRENT_USER;  
GO  

B. Usar CURRENT_USER como restricción DEFAULT

En este ejemplo se crea una tabla que usa CURRENT_USER como restricción DEFAULT para la columna order_person en una fila de ventas.

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  
      WHERE TABLE_NAME = 'orders22')  
   DROP TABLE orders22;  
GO  
SET NOCOUNT ON;  
CREATE TABLE orders22  
(  
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id  int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);  
GO  

Este ejemplo inserta un registro en la tabla. El usuario denominado Wanida ejecuta estas instrucciones.

INSERT orders22 (cust_id, order_amt)  
VALUES (5105, 577.95);  
GO  
SET NOCOUNT OFF;  
GO  

Esta consulta selecciona toda la información de la tabla orders22.

SELECT * FROM orders22;  
GO  

Este es el conjunto de resultados.

order_id    cust_id     order_date           order_amt    order_person
----------- ----------- -------------------- ------------ ------------
1000        5105        2005-04-03 23:34:00  577.95       Wanida
  
(1 row(s) affected)

C. Usar CURRENT_USER desde un contexto suplantado

En este ejemplo, el usuario Wanida ejecuta el siguiente código Transact-SQL para suplantar al usuario "Arnalfo".

SELECT CURRENT_USER;  
GO  
EXECUTE AS USER = 'Arnalfo';  
GO  
SELECT CURRENT_USER;  
GO  
REVERT;  
GO  
SELECT CURRENT_USER;  
GO  

Este es el conjunto de resultados.

Wanida
Arnalfo
Wanida

Consulte también

USER_NAME (Transact-SQL)
SYSTEM_USER (Transact-SQL)
sys.database_principals (Transact-SQL)
MODIFICAR TABLA (Transact-SQL)
CREAR TABLA (Transact-SQL)
Funciones del sistema (Transact-SQL)