ORIGINAL_LOGIN (Transact-SQL)
適用於:SQL Server
Azure SQL 資料庫 Azure SQL 受控執行個體
傳回連線至 SQL Server 執行個體的登入名稱。 您可以利用這個函數來傳回有許多明確或隱含內容切換的工作階段中原始登入的識別。
Syntax
ORIGINAL_LOGIN( )
注意
若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件。
傳回型別
sysname
備註
這個函數在稽核原始連接內容的識別時很有用。 SESSION_USER 和 CURRENT_USER 這類函數會傳回目前的執行內容,ORIGINAL_LOGIN 則會傳回在該工作階段中,最先連線至 SQL Server 執行個體的登入身分識別。
範例
下列範例會將目前工作階段的執行內容從陳述式的呼叫端切換到 login1
。 和 函數用來傳回目前工作階段使用者 (內容切換後的使用者),以及原始登入帳戶。
注意
雖然 Azure SQL Database 支援 ORIGINAL_LOGIN 函式,但由於 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