Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy to:SQL ServerAzure
SQL Managed InstanceAzure
Synapse Analytics
Pozwala na wprowadzenie wartości dostarczonej przez system dla bieżącego logowania do tabeli, gdy nie podano wartości domyślnej.
Transact-SQL konwencje składni
Syntax
SYSTEM_USER
Typy zwracane
nvarchar(128)
Remarks
Możesz użyć funkcji SYSTEM_USER z DEFAULT ograniczeniami w instrukcjach CREATE TABLE i ALTER TABLE in. Możesz też używać go jako dowolnej standardowej funkcji.
Jeśli nazwa użytkownika i nazwa logowania są różne, SYSTEM_USER zwraca nazwę logowania.
Jeśli aktualny użytkownik jest zalogowany do SQL Server za pomocą uwierzytelniania Windows, SYSTEM_USER zwraca nazwę Windows logowania w formie: DOMAIN\user_login_name. Jednak jeśli aktualny użytkownik jest zalogowany do SQL Server za pomocą uwierzytelniania SQL Server, SYSTEM_USER zwraca nazwę SQL Server logowania, na przykład WillisJo dla użytkownika zalogowanego jako WillisJo.
SYSTEM_USER zwraca nazwę aktualnie wykonywanego kontekstu. Jeśli EXECUTE AS zdanie zostało użyte do zmiany kontekstu, SYSTEM_USER zwraca nazwę podszywanego kontekstu.
Nie możesz EXECUTE AS SYSTEM_USER.
Azure SQL Database: Instrukcja SYSTEM_USER nie obsługuje wykonywania z użyciem podszywanego kontekstu bezpieczeństwa przez EXECUTE AS.
Examples
A. Używając SYSTEM_USER do zwracania aktualnej nazwy użytkownika systemu
Poniższy przykład deklaruje char zmienną, przechowuje aktualną wartość zmiennej SYSTEM_USER , a następnie drukuje wartość zapisaną w tej zmiennej.
DECLARE @sys_usr CHAR(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
GO
Oto zestaw wyników.
----------------------------------------------------------
The current system user is: WillisJo
(1 row(s) affected)
B. Używając SYSTEM_USER z DEFAULT ograniczeniami
Poniższy przykład tworzy tabelę z jako SYSTEM_USER ograniczeniem DEFAULT dla kolumny 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
Następujące zapytanie do wyboru wszystkich informacji z tabeli Sales_Tracking :
SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO
Oto zestaw wyników.
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)
Przykłady: Azure Synapse Analytics
C. Używając SYSTEM_USER do zwracania aktualnej nazwy użytkownika systemu
Poniższy przykład zwraca bieżącą wartość .SYSTEM_USER
SELECT SYSTEM_USER;