Compartilhar via


SYSTEM_USER (Transact-SQL)

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

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

SYSTEM_USER

Tipos de retorno

nchar

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 tiver feito logon no SQL Server usando a Autenticação do Windows, SYSTEM_USER retornará o nome de identificação de logon do Windows no formato: DOMAIN\nome_de_logon_do_usuário. 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.

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

Aqui está 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 AdventureWorks2008R2;
GO
CREATE TABLE 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_Tracking (Rep_id)
VALUES (151)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '5/15/98')
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '6/20/98')
INSERT Sales_Tracking (Rep_id)
VALUES (21392)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '11/03/98')
GO

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

SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO

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