ORIGINAL_LOGIN (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

返回连接到 SQL Server 实例的登录名。 您可以在具有众多显式或隐式上下文切换的会话中使用该函数返回原始登录的标识。

Transact-SQL 语法约定

语法

ORIGINAL_LOGIN( )  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

返回类型

sysname

备注

该函数在审核原始连接上下文的标识时非常有用。 但是 SESSION_USERCURRENT_USER 之类的函数返回当前的执行上下文,ORIGINAL_LOGIN 返回该会话中首次连接到 SQL Server 实例的登录的标识。

示例

以下示例将当前会话的执行上下文从语句的调用方切换到 login1。 函数 SUSER_SNAMEORIGINAL_LOGIN 用于返回当前会话用户(上下文切换到的用户)和原始登录帐户。

备注

尽管 Azure SQL 数据库上支持 ORIGINAL_LOGIN 函数,但由于 Azure SQL 数据库上不支持 Execute as LOGIN,因此以下脚本将失败

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  

另请参阅

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