Partilhar via


SESSION_USER (Transact-SQL)

SESSION_USER retorna o nome de usuário do contexto atual no banco de dados atual.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

SESSION_USER

Tipos de retorno

nvarchar(128)

Comentários

Use SESSION_USER com restrições DEFAULT na instrução CREATE TABLE ou ALTER TABLE, ou use como qualquer função padrão. SESSION_USER pode ser inserida em uma tabela quando nenhum valor padrão é especificado. Essa função não utiliza argumentos. SESSION_USER pode ser usada em consultas.

Se SESSION_USER for chamada após uma alternância de contexto, retornará o nome de usuário do contexto representado.

Exemplos

A.Usando SESSION_USER para retornar o nome de usuário da sessão atual

O exemplo a seguir declara uma variável como nchar, atribui o valor atual de SESSION_USER à variável e a imprime com uma descrição de 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 usuário da sessão é Surya:

--------------------------------------------------------------

This session's current user is: Surya

(1 row(s) affected)

B.Usando SESSION_USER com restrições DEFAULT

O exemplo a seguir cria uma tabela que usa SESSION_USER como uma restrição DEFAULT para o nome da pessoa que registra o recebimento de uma remessa.

USE AdventureWorks2012;
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 registros adicionados à tabela serão carimbados com o nome do usuário atual. Neste exemplo, Wanida, Sylvestere Alejandro confirmam o recebimento de remessas. Isso pode ser emulado alternando-se o contexto do usuário 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 a seguir seleciona todas as informações da tabela 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

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)

Consulte também

Referência

ALTER TABLE (Transact-SQL)

CREATE TABLE (Transact-SQL)

CURRENT_TIMESTAMP (Transact-SQL)

CURRENT_USER (Transact-SQL)

SYSTEM_USER (Transact-SQL)

Funções de sistema (Transact-SQL)

USER (Transact-SQL)

USER_NAME (Transact-SQL)