ORIGINAL_LOGIN (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Devuelve el nombre del inicio de sesión que se conectó a la instancia de SQL Server. Puede utilizar esta función para devolver la identidad del inicio de sesión original en sesiones en las que hay varios cambios de contexto explícitos o implícitos.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ORIGINAL_LOGIN( )
Tipos de valor devuelto
sysname
Observaciones
Esta función puede resultar útil para la auditoría de la identidad del contexto de conexión original. Mientras que funciones como SESSION_USER y CURRENT_USER devuelven el contexto de ejecución actual, ORIGINAL_LOGIN devuelve la identidad del inicio de sesión que se conectó en primer lugar a la instancia de SQL Server en esa sesión.
Ejemplos
El ejemplo siguiente cambia el contexto de ejecución de la sesión actual desde el solicitante de las instrucciones para login1
. Las funciones SUSER_SNAME
y ORIGINAL_LOGIN
se utilizan para devolver el usuario de la sesión actual (el usuario al que se cambió el contexto), y la cuenta de inicio de sesión original.
Nota
Aunque en Azure SQL Database se admite la función ORIGINAL_LOGIN, el script siguiente producirá un error porque Execute as LOGIN no se admite en 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