CURRENT_USER (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBanco de dados SQL no Microsoft Fabric

Essa função retorna o nome do usuário atual. Essa função é equivalente a USER_NAME().

Convenções de sintaxe de Transact-SQL

Sintaxe

CURRENT_USER  

Tipos de retorno

sysname

Comentários

CURRENT_USER retorna o nome do contexto de segurança atual. Se CURRENT_USER for executado após uma chamada para o contexto de comutadores EXECUTE AS, CURRENT_USER retornará o nome do contexto representado. Se uma entidade de segurança do Windows tiver acessado o banco de dados por meio da associação em um grupo, CURRENT_USER retornará a entidade de segurança do Windows em vez do nome do grupo.

Confira SUSER_NAME (Transact-SQL) e SYSTEM_USER (Transact-SQL) para saber como retornar o login do usuário atual.

Exemplos

a. Usando CURRENT_USER para retornar o nome do usuário atual

Este exemplo retorna o nome do usuário atual.

SELECT CURRENT_USER;  
GO  

B. Usando CURRENT_USER como restrição DEFAULT

Este exemplo cria uma tabela que usa CURRENT_USER como uma restrição DEFAULT para a coluna order_person em uma linha de vendas.

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 exemplo insere um registro na tabela. O usuário chamado Wanida executa essas instruções.

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

Essa consulta seleciona todas as informações da tabela orders22.

SELECT * FROM orders22;  
GO  

Veja a seguir o 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. Usando CURRENT_USER em um contexto representado

Neste exemplo, o usuário Wanida executa o código Transact-SQL a seguir para representar o usuário 'Alberto'.

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

Veja a seguir o conjunto de resultados.

Wanida
Arnalfo
Wanida