SYSTEM_USER (Transact-SQL)
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
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
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
Veja a seguir 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
Veja a seguir 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)