ORIGINAL_LOGIN (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
Renvoie le nom de la connexion qui s'est connectée à l'instance de SQL Server. Vous pouvez utiliser cette fonction pour renvoyer l'identité de la connexion d'origine dans les sessions où il y a un grand nombre de changements de contexte implicites ou explicites.
Conventions de la syntaxe Transact-SQL
Syntaxe
ORIGINAL_LOGIN( )
Types de retour
sysname
Notes
Cette fonction peut s'avérer utile pour auditer l'identité du contexte de connexion d'origine. Alors que les fonctions telles que SESSION_USER et CURRENT_USER renvoient le contexte d’exécution actuel, ORIGINAL_LOGIN renvoie l’identité de la première connexion à l’instance de SQL Server dans la session.
Exemples
L'exemple suivant change le contexte d'exécution de la session actuelle de l'appelant des instructions vers login1
. Les fonctions SUSER_SNAME
et ORIGINAL_LOGIN
sont utilisées pour renvoyer l'utilisateur de la session actuelle (l'utilisateur vers lequel le contexte a été basculé) et le compte de connexion d'origine.
Notes
Bien que la fonction ORIGINAL_LOGIN soit prise en charge sur Azure SQL Database, le script suivant échoue, car Execute as LOGIN n’est pas pris en charge sur Azure SQL Database.
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