次の方法で共有


SqlContext.WindowsIdentity プロパティ

定義

呼び出し元の Microsoft Windows ID。

public:
 static property System::Security::Principal::WindowsIdentity ^ WindowsIdentity { System::Security::Principal::WindowsIdentity ^ get(); };
public static System.Security.Principal.WindowsIdentity WindowsIdentity { get; }
member this.WindowsIdentity : System.Security.Principal.WindowsIdentity
Public Shared ReadOnly Property WindowsIdentity As WindowsIdentity

プロパティ値

WindowsIdentity

呼び出し元の Windows ID を表す WindowsIdentity インスタンス。クライアントが SQL Server 認証を通じて認証された場合は null

次の例では、呼び出し元であるクライアントの Windows ID を取得し、クライアントの権限を借用する方法を示します。

WindowsIdentity clientId = null;
WindowsImpersonationContext impersonatedUser = null;

clientId = SqlContext.WindowsIdentity;

// This outer try block is used to thwart exception filter attacks which would prevent
// the inner finally block from executing and resetting the impersonation.
try
{
   try
   {
      impersonatedUser = clientId.Impersonate();
      if (impersonatedUser != null)
      {
        // Perform some action using impersonation.
      }
   }
   finally
   {
      if (impersonatedUser != null)
         impersonatedUser.Undo();
   }
}
catch
{
   throw;
}
Dim clientId As WindowsIdentity
Dim impersonatedUser As WindowsImpersonationContext

clientId = SqlContext.WindowsIdentity

Try 
   Try
   
      impersonatedUser = clientId.Impersonate()

      If impersonatedUser IsNot Nothing Then
         ' Perform some action using impersonation.
      End If

   Finally

     If impersonatedUser IsNot Nothing Then
         impersonatedUser.Undo
     End If

   End Try

Catch e As Exception

   throw e

End Try

注釈

SQL Server内の共通言語ランタイム (CLR) コードは、常にプロセス アカウントのコンテキストで呼び出されます。 コードで、SQL Server プロセス ID ではなく、呼び出し元のユーザーの ID を使用してアクションを実行する必要がある場合は、このプロパティを使用して偽装トークンを取得する必要があります。 WindowsIdentity オブジェクトの取得後、呼び出し元は、クライアント アカウントの権限を借用して、操作を実行できます。

SQL Serverの外部から呼び出されると、a NotSupportedException がスローされます。

EXTERNAL_ACCESS 権限または UNSAFE 権限のあるアセンブリのみが、このプロパティにアクセスできます。

このプロパティは読み取り専用です。

適用対象