CURRENT_USER (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Denna funktion returnerar namnet på den aktuella användaren. Den här funktionen motsvarar USER_NAME().

Transact-SQL syntaxkonventioner

Syntax

CURRENT_USER  

Returtyper

sysname

Anmärkningar

CURRENT_USER återger namnet på den aktuella säkerhetskontexten. Om CURRENT_USER exekveras efter ett anrop för att byta EXECUTE AS kontext, CURRENT_USER kommer namnet på den imiterade kontexten att returneras. Om en Windows-huvudperson har fått tillgång till databasen genom medlemskap i en grupp, CURRENT_USER kommer namnet på Windows-huvudpersonen att returneras istället för gruppnamnet.

Se SUSER_NAME (Transact-SQL) ochSYSTEM_USER (Transact-SQL) för att lära dig hur du återställer inloggningen för den aktuella användaren.

Examples

A. Att använda CURRENT_USER för att returnera det aktuella användarnamnet

Detta exempel returnerar namnet på den aktuella användaren.

SELECT CURRENT_USER;  
GO  

B. Att använda CURRENT_USER som STANDARDBEGRÄNSNING

Detta exempel skapar en tabell som använder CURRENT_USER som DEFAULT begränsning, för kolumnen order_person , på en försäljningsrad.

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  
      WHERE TABLE_NAME = 'orders22')  
   DROP TABLE orders22;  
GO  
SET NOCOUNT ON;  
CREATE TABLE orders22  
(  
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id  int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);  
GO  

Detta exempel infogar en post i tabellen. Användaren som Wanida heter exekverar dessa satser.

INSERT orders22 (cust_id, order_amt)  
VALUES (5105, 577.95);  
GO  
SET NOCOUNT OFF;  
GO  

Denna fråga väljer all information från tabellen orders22 .

SELECT * FROM orders22;  
GO  

Här är resultatet.

order_id    cust_id     order_date           order_amt    order_person
----------- ----------- -------------------- ------------ ------------
1000        5105        2005-04-03 23:34:00  577.95       Wanida
  
(1 row(s) affected)

C. Att använda CURRENT_USER från en imiterad kontext

I detta exempel exekverar användaren Wanida följande Transact-SQL kod för att imitera användaren 'Arnalfo'.

SELECT CURRENT_USER;  
GO  
EXECUTE AS USER = 'Arnalfo';  
GO  
SELECT CURRENT_USER;  
GO  
REVERT;  
GO  
SELECT CURRENT_USER;  
GO  

Här är resultatet.

Wanida
Arnalfo
Wanida

Se även

USER_NAME (Transact-SQL)
SYSTEM_USER (Transact-SQL)
sys.database_principals (Transact-SQL)
ALTER TABLE (Transact-SQL)
SKAPA TABELL (Transact-SQL)
Systemfunktioner (Transact-SQL)