ORIGINAL_LOGIN (Transact-SQL)

SQL Server インスタンスに接続しているログインの名前を返します。この関数を使用すると、明示的または暗黙的にコンテキストが何度も切り替えられるセッションにおける、元のログインの ID を取得できます。コンテキスト切り替えの詳細については、「コンテキストの切り替えについて」を参照してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

ORIGINAL_LOGIN()

戻り値の型

sysname

説明

この関数は、元の接続コンテキストの ID を監査するときに便利です。SESSION_USERCURRENT_USER などの関数では、現在実行しているコンテキストが返されるのに対し、ORIGINAL_LOGIN では、そのセッションで SQL Server インスタンスに最初に接続したログインの ID が返されます。

次の例では、現在のセッションの実行コンテキストを、ステートメントの呼び出し元のログインから login1 に切り替えます。関数 SUSER_SNAME および ORIGINAL_LOGIN を使用すると、現在のセッションのユーザー (コンテキストの切り替え先のユーザー) と、元のログイン アカウントが返されます。

USE AdventureWorks;
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