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ópico Convençõ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\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.

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 AdventureWorks2012;
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

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)

Consulte também

Referência

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)