USER (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Pozwala na wstawienie wartości użytkownika bazy danych aktualnego użytkownika do tabeli, gdy nie podano wartości domyślnej.

Transact-SQL konwencje składni

Składnia

USER  

Typy zwracane

nvarchar(128)

Uwagi

USER zapewnia tę samą funkcjonalność co funkcja systemu USER_NAME.

Użyć USER z DEFAULT ograniczeniami w instrukcjach CREATE TABLE or ALTER TABLE lub użyć jako dowolnej funkcji standardowej.

USER zawsze zwraca nazwę bieżącego kontekstu. Po wywołaniu EXECUTE AS po wywołaniu zwraca USER nazwę podszytego kontekstu.

Jeśli podmiot Windows uzyska dostęp do bazy danych poprzez członkostwo w grupie, USER zwraca nazwę podmiotu Windows zamiast nazwy grupy.

Przykłady

A. Używanie USER do zwracania nazwy użytkownika bazy danych

Poniższy przykład deklaruje zmienną jako , charprzypisuje jej aktualną wartość USER , a następnie drukuje zmienną z opisem tekstowym.

DECLARE @usr CHAR(30)  
SET @usr = user  
SELECT 'The current user''s database username is: '+ @usr  
GO  

Oto zestaw wyników.

-----------------------------------------------------------------------  
The current user's database username is: dbo  
 
(1 row(s) affected)

B. Użycie USER z DEFAULT ograniczeniami

Poniższy przykład tworzy tabelę, używając USER jako ograniczenia DEFAULT dla sprzedawcy wiersza sprzedaży.

USE AdventureWorks2022;  
GO  
CREATE TABLE inventory22  
(  
 part_id INT IDENTITY(100, 1) NOT NULL,  
 description VARCHAR(30) NOT NULL,  
 entry_person VARCHAR(30) NOT NULL DEFAULT USER   
)  
GO  
INSERT inventory22 (description)  
VALUES ('Red pencil')  
INSERT inventory22 (description)  
VALUES ('Blue pencil')  
INSERT inventory22 (description)  
VALUES ('Green pencil')  
INSERT inventory22 (description)  
VALUES ('Black pencil')  
INSERT inventory22 (description)  
VALUES ('Yellow pencil')  
GO  

To jest zapytanie do wyboru wszystkich informacji z tabeli inventory22 :

SELECT * FROM inventory22 ORDER BY part_id;  
GO  

Oto zbiór wyników (zwróć uwagę na wartość entry-person ):

part_id     description                    entry_person
----------- ------------------------------ -------------------------
100         Red pencil                     dbo
101         Blue pencil                    dbo
102         Green pencil                   dbo
103         Black pencil                   dbo
104         Yellow pencil                  dbo
 
(5 row(s) affected)

C. Używając USER w połączeniu z EXECUTE AS

Poniższy przykład ilustruje zachowanie podczas USER wywoływania w sesji podszywanej pod siebie.

SELECT USER;  
GO  
EXECUTE AS USER = 'Mario';  
GO  
SELECT USER;  
GO  
REVERT;  
GO  
SELECT USER;  
GO  

Oto zestaw wyników.

DBO
Mario
DBO

Zobacz też

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
Funkcje zabezpieczeń (Transact-SQL)
SESSION_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
USER_NAME (Transact-SQL)