Freigeben über


USER (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Ermöglicht das Einfügen eines vom System bereitgestellten Werts für den Datenbankbenutzernamen des aktuellen Benutzers in eine Tabelle, wenn kein Standardwert angegeben ist.

Transact-SQL-Syntaxkonventionen

Syntax

USER  

Rückgabetypen

nvarchar(128)

Hinweise

USER bietet die gleiche Funktionalität wie die USER_NAME-Systemfunktion.

Verwenden Sie die USER-Funktion mit DEFAULT-Einschränkungen in der CREATE TABLE- oder ALTER TABLE-Anweisung oder als beliebige Standardfunktion.

USER gibt immer den Namen des aktuellen Kontexts zurück. Wenn USER nach einer EXECUTE AS-Anweisung aufgerufen wird, wird der Name des Kontexts zurückgegeben, dessen Identität angenommen wurde.

Greift ein Windows-Prinzipal über die Mitgliedschaft in einer Gruppe auf die Datenbank zu, gibt USER den Namen des Windows-Prinzipals statt des Namens der Gruppe zurück.

Beispiele

A. Verwenden von USER zum Zurückgeben des Datenbankbenutzernamens

Im folgenden Beispiel wird eine Variable als char-Datentyp deklariert, ihr wird der aktuelle Wert von USER zugewiesen, und anschließend wird die Variable mit einer Textbeschreibung gedruckt.

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

Hier sehen Sie das Ergebnis.

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

B. Verwenden von USER mit DEFAULT-Einschränkungen

Im folgenden Beispiel wird eine Tabelle mit USER als DEFAULT-Einschränkung für den Verkäufer in einer Zeile mit Verkaufszahlen erstellt.

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  

Im Folgenden wird die Abfrage zur Auswahl aller Informationen aus der inventory22-Tabelle aufgeführt:

SELECT * FROM inventory22 ORDER BY part_id;  
GO  

Im Folgenden wird das Resultset aufgeführt (beachten Sie den entry-person-Wert):

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. Verwenden von USER in Kombination mit EXECUTE AS

Im folgenden Beispiel wird das Verhalten von USER bei Aufruf in einer Sitzung mit Identitätswechsel gezeigt.

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

Hier sehen Sie das Ergebnis.

DBO
Mario
DBO

Weitere Informationen

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
Sicherheitsfunktionen (Transact-SQL)
SESSION_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
USER_NAME (Transact-SQL)