SqlContext.WindowsIdentity 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
호출자의 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
속성 값
호출자의 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
권한으로 표시된 어셈블리만 이 속성에 액세스할 수 있습니다.
이 속성은 읽기 전용입니다.