Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
Tillåter att ett systemtillhandahållet värde för den aktuella inloggningen infogas i en tabell när inget standardvärde specificeras.
Transact-SQL syntaxkonventioner
Syntax
SYSTEM_USER
Returtyper
nvarchar(128)
Remarks
Du kan använda funktionen SYSTEM_USER med DEFAULT begränsningar i CREATE TABLE och-satserna ALTER TABLE . Du kan också använda den som vilken standardfunktion som helst.
Om användarnamnet och inloggningsnamnet skiljer sig åt, returnerar SYSTEM_USER inloggningsnamnet.
Om den nuvarande användaren är inloggad på SQL Server med Windows Authentication returnerar SYSTEM_USER Windows inloggningsidentifieringsnamn i formuläret: DOMAIN\user_login_name. Men om den nuvarande användaren är inloggad på SQL Server med SQL Server autentisering, returnerar SYSTEM_USER det SQL Server inloggningsidentifieringsnamnet, till exempel WillisJo för en användare inloggad som WillisJo.
SYSTEM_USER returnerar namnet på den för närvarande körande kontexten. Om påståendet EXECUTE AS har använts för att byta kontext returnerar SYSTEM_USER namnet på den imiterade kontexten.
Du kan inte EXECUTE AS göra SYSTEM_USER.
Azure SQL Database: SYSTEM_USER-satsen stöder inte exekvering med en imiterad säkerhetskontext genom EXECUTE AS.
Examples
A. Att använda SYSTEM_USER för att returnera det aktuella systemanvändarnamnet
Följande exempel deklarerar en char variabel, lagrar det aktuella värdet av SYSTEM_USER i variabeln och skriver sedan ut värdet som lagrats i variabeln.
DECLARE @sys_usr CHAR(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
GO
Här är resultatet.
----------------------------------------------------------
The current system user is: WillisJo
(1 row(s) affected)
B. Att använda SYSTEM_USER med DEFAULT begränsningar
Följande exempel skapar en tabell med SYSTEM_USER som DEFAULT begränsning för kolumnen 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
Följande fråga väljer all information från Sales_Tracking tabellen:
SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO
Här är resultatet.
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)
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
C. Att använda SYSTEM_USER för att returnera det aktuella systemanvändarnamnet
Följande exempel ger det aktuella värdet av SYSTEM_USER.
SELECT SYSTEM_USER;
Se även
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
Systemfunktioner (Transact-SQL)
USER (Transact-SQL)