次の方法で共有


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 AdventureWorks2012;
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)