CURRENT_USER (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Deze functie geeft de naam van de huidige gebruiker terug. Deze functie is gelijk aan USER_NAME().

Transact-SQL syntaxis-conventies

Syntaxis

CURRENT_USER  

Retourtypen

sysname

Opmerkingen

CURRENT_USER geeft de naam van de huidige beveiligingscontext terug. Als CURRENT_USER wordt uitgevoerd na een oproep om de context te EXECUTE AS wisselen, CURRENT_USER zal de naam van de geïmproviseerde context worden teruggegeven. Als een Windows-principal toegang heeft gehad tot de database via lidmaatschap van een groep, CURRENT_USER zal de naam van de Windows-principal teruggeven in plaats van de groepsnaam.

Zie SUSER_NAME (Transact-SQL) enSYSTEM_USER (Transact-SQL) om te leren hoe je de login van de huidige gebruiker kunt teruggeven.

Voorbeelden

Eén. Met CURRENT_USER de huidige gebruikersnaam teruggeven

Dit voorbeeld geeft de naam van de huidige gebruiker terug.

SELECT CURRENT_USER;  
GO  

B. Het gebruik van CURRENT_USER als DEFAULT beperking

Dit voorbeeld maakt een tabel die als CURRENT_USER beperking wordt gebruiktDEFAULT, voor de order_person kolom, op een sales-rij.

Note

In Azure SQL Database en SQL Database in Microsoft Fabric is de USE instructie niet beschikbaar. Maak in plaats daarvan direct verbinding met de beoogde database en voer de rest van het codevoorbeeld uit.

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  

Dit voorbeeld voegt een record in de tabel in. De gebruiker die Wanida genoemd is, voert deze statements uit.

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

Deze query selecteert alle informatie uit de orders22 tabel.

SELECT * FROM orders22;  
GO  

Hier is het resultatenoverzicht.

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. Het gebruik van CURRENT_USER vanuit een geïmiteerde context

In dit voorbeeld voert de gebruiker Wanida de volgende Transact-SQL code uit om gebruiker 'Arnalfo' te imiteren.

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

Hier is het resultatenoverzicht.

Wanida
Arnalfo
Wanida