Partilhar via


SESSION_USER (Transact-SQL)

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

SESSION_USER devolve o nome de utilizador do contexto atual na base de dados atual.

Transact-SQL convenções de sintaxe

Sintaxe

SESSION_USER  

Tipos de devolução

nvarchar(128)

Observações

Use SESSION_USER com restrições DEFAULT nas instruções CREATE TABLE ou ALTER TABLE, ou utilize-a como qualquer função padrão. SESSION_USER podem ser inseridos numa tabela quando não há valor padrão especificado. Esta função não aceita argumentos. SESSION_USER podem ser usados em consultas.

Se SESSION_USER for chamado após uma troca de contexto, SESSION_USER devolverá o nome de utilizador do contexto personificado.

Examples

A. Usar SESSION_USER para devolver o nome de utilizador da sessão atual

O exemplo seguinte declara uma variável como nchar, atribui o valor atual de SESSION_USER a essa variável e depois imprime a variável com uma descrição em texto.

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

Este é o conjunto de resultados quando o utilizador da sessão é Surya:

--------------------------------------------------------------
This session's current user is: Surya

(1 row(s) affected)

B. Usar SESSION_USER com restrições PADRÃO

O exemplo seguinte cria uma tabela que usa SESSION_USER como DEFAULT restrição o nome da pessoa que regista a receção de um envio.

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  

Os registos adicionados à tabela serão carimbados com o nome de utilizador do utilizador atual. Neste exemplo, Wanida, Sylvester, e Alejandro verifique a receção de envios. Isto pode ser emulado trocando o contexto do utilizador usando 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  

A consulta seguinte seleciona toda a informação da deliveries3 tabela.

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  

Aqui está o 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)

Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)

C: Usar SESSION_USER para devolver o nome de utilizador da sessão atual

O exemplo seguinte devolve o utilizador da sessão para a sessão atual.

SELECT SESSION_USER;  

Ver também

ALTERAR TABELA (Transact-SQL)
CRIAR TABELA (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Funções do sistema (Transact-SQL)
UTILIZADOR (Transact-SQL)
USER_NAME (Transact-SQL)