ORIGINAL_LOGIN (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Server のインスタンスに接続しているログインの名前を返します。 この関数を使用すると、明示的または暗黙的にコンテキストが何度も切り替えられるセッションにおける、元のログインの ID を取得できます。
構文
ORIGINAL_LOGIN( )
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
戻り値の型
sysname
解説
この関数は、元の接続コンテキストの ID を監査するときに便利です。 SESSION_USER や CURRENT_USER などの関数が、現在実行しているコンテキストを返す一方で、ORIGINAL_LOGIN は、そのセッションで SQL Server のインスタンスに最初に接続したログインの ID を返します。
例
次の例では、現在のセッションの実行コンテキストを、ステートメントの呼び出し元のログインから login1
に切り替えます。 関数 SUSER_SNAME
および ORIGINAL_LOGIN
を使用すると、現在のセッションのユーザー (コンテキストの切り替え先のユーザー) と、元のログイン アカウントが返されます。
Note
Azure SQL Database では ORIGINAL_LOGIN 関数がサポートされますが、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