다음을 통해 공유


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 외부에서 호출 하는 경우는 NotSupportedException throw 됩니다.

EXTERNAL_ACCESS 또는 UNSAFE 권한으로 표시된 어셈블리만 이 속성에 액세스할 수 있습니다.

이 속성은 읽기 전용입니다.

적용 대상