Freigeben über


ORIGINAL_LOGIN (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Gibt den Anmeldenamen zurück, der eine Verbindung mit der Instanz von SQL Server hergestellt hat. Mit dieser Funktion können Sie die Identität des ursprünglichen Anmeldenamens in Sitzungen zurückgeben, in denen zahlreiche explizite oder implizite Kontextwechsel vorkommen.

Transact-SQL-Syntaxkonventionen

Syntax

ORIGINAL_LOGIN( )  

Rückgabetypen

sysname

Bemerkungen

Diese Funktion kann sich bei der Überwachung der Identität des ursprünglichen Verbindungskontexts als nützlich erweisen. Während Funktionen wie SESSION_USER und CURRENT_USER den aktuellen Ausführungskontext zurückgeben, gibt ORIGINAL_LOGIN die Identität des Anmeldenamens zurück, mit dem die erste Verbindung mit der Instanz von SQL Server in der Sitzung hergestellt wurde.

Beispiele

Im folgenden Beispiel wechselt der Ausführungskontext der aktuellen Sitzung vom Aufrufer der Anweisungen zu login1. Die Funktionen SUSER_SNAME und ORIGINAL_LOGIN werden verwendet, um den aktuellen Sitzungsbenutzer (der Benutzer, zu dem der Kontext gewechselt hat) und das ursprüngliche Anmeldekonto zurückzugeben.

Hinweis

Obwohl die Funktion ORIGINAL_LOGIN in Azure SQL-Datenbank unterstützt wird, schlägt das folgende Skript fehl, da EXECUTE AS LOGIN in Azure SQL-Datenbank nicht unterstützt wird.

USE AdventureWorks2022;  
GO  
--Create a temporary login and user.  
CREATE LOGIN login1 WITH PASSWORD = 'J345#$)thb';  
CREATE USER user1 FOR LOGIN login1;  
GO  
--Execute a context switch to the temporary login account.  
DECLARE @original_login sysname;  
DECLARE @current_context sysname;  
EXECUTE AS LOGIN = 'login1';  
SET @original_login = ORIGINAL_LOGIN();  
SET @current_context = SUSER_SNAME();  
SELECT 'The current executing context is: '+ @current_context;  
SELECT 'The original login in this session was: '+ @original_login  
GO  
-- Return to the original execution context  
-- and remove the temporary principal.  
REVERT;  
GO  
DROP LOGIN login1;  
DROP USER user1;  
GO  

Siehe auch

EXECUTE AS (Transact-SQL)
REVERT (Transact-SQL)