Udostępnij za pomocą


UŻYTKOWNIK (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 USER_NAME funkcja systemowa.

Użyj USER z ograniczeniami DEFAULT w instrukcjach CREATE TABLE lub ALTER TABLE, albo jako dowolną standardową funkcję.

USER zawsze zwraca nazwę bieżącego kontekstu. Po wywołaniu po wykonaniu instrukcji EXECUTE AS, USER zwraca nazwę podszywanego kontekstu.

Jeśli główny użytkownik Windows uzyska dostęp do bazy danych poprzez członkostwo w grupie, USER zwraca nazwę głównej osoby z Windows zamiast nazwy grupy.

Przykłady

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

Poniższy przykład deklaruje zmienną jako char, przypisuje jej aktualną wartość USER, a następnie drukuje tę 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żywanie USER z ograniczeniami DOMYŚLNYMI

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żywanie 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ż

ZMIEŃ TABELĘ (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)