SYSTEM_USER (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Permite que um valor fornecido pelo sistema para o logon atual seja inserido em uma tabela quando nenhum valor padrão é especificado.

Convenções de sintaxe de Transact-SQL

Sintaxe

SYSTEM_USER  

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Tipos de retorno

nvarchar(128)

Comentários

É possível usar a função SYSTEM_USER com restrições DEFAULT nas instruções CREATE TABLE e ALTER TABLE. Ela também pode ser usada como qualquer função padrão.

Se o nome de usuário e o nome de logon forem diferentes, SYSTEM_USER retornará o nome de logon.

Se o usuário atual estiver conectado ao SQL Server usando a Autenticação do Windows, SYSTEM_USER retornará o nome de identificação de logon do Windows no formato: DOMAIN\user_login_name. Entretanto, se o usuário atual tiver feito logon no SQL Server usando a Autenticação do SQL Server, SYSTEM_USER retornará o nome de identificação de logon do SQL Server, como WillisJo para um usuário conectado como WillisJo.

SYSTEM_USER retorna o nome do contexto em execução no momento. Se a instrução EXECUTE AS tiver sido usada para alternar o contexto, SYSTEM_USER retornará o nome do contexto representado.

Você não pode EXECUTAR como um SYSTEM_USER.

Banco de Dados SQL do Azure: a instrução SYSTEM_USER não dá suporte à execução usando um contexto de segurança representado por meio de EXECUTE AS.

Exemplos

a. Usando SYSTEM_USER para retornar o nome de usuário do sistema atual

O exemplo a seguir declara uma variável char, armazena o valor atual SYSTEM_USER na variável e imprime o valor armazenado na variável.

DECLARE @sys_usr CHAR(30);  
SET @sys_usr = SYSTEM_USER;  
SELECT 'The current system user is: '+ @sys_usr;  
GO  

Este é o conjunto de resultados.

----------------------------------------------------------
The current system user is: WillisJo

(1 row(s) affected)

B. Usando SYSTEM_USER com restrições DEFAULT

O exemplo a seguir cria uma tabela com a restrição SYSTEM_USER como uma restrição DEFAULT para a coluna SRep_tracking_user.

USE AdventureWorks2022;  
GO  
CREATE TABLE Sales.Sales_Tracking  
(  
    Territory_id INT IDENTITY(2000, 1) NOT NULL,  
    Rep_id INT NOT NULL,  
    Last_sale DATETIME NOT NULL DEFAULT GETDATE(),  
    SRep_tracking_user VARCHAR(30) NOT NULL DEFAULT SYSTEM_USER  
);  
GO  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (151);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (293, '19980515');  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (27882, '19980620');  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (21392);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (24283, '19981130');  
GO  

A consulta a seguir seleciona todas a informações da tabela Sales_Tracking:

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

Este é o conjunto de resultados.

Territory_id Rep_id Last_sale            SRep_tracking_user
-----------  ------ -------------------- ------------------
2000         151    Mar 4 1998 10:36AM   ArvinDak
2001         293    May 15 1998 12:00AM  ArvinDak
2003         21392  Mar 4 1998 10:36AM   ArvinDak
2004         24283  Nov 3 1998 12:00AM   ArvinDak
2002         27882  Jun 20 1998 12:00AM  ArvinDak
 
(5 row(s) affected)

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

C. Usando SYSTEM_USER para retornar o nome de usuário do sistema atual

O exemplo a seguir retorna o valor atual de SYSTEM_USER.

SELECT SYSTEM_USER;  

Consulte Também

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
Funções de sistema (Transact-SQL)
USER (Transact-SQL)