SQL Server Reporting Services 전자 메일 구독을 배달하는 동안 AuthzInitializeContextFromSid API 함수에 대한 호출이 실패합니다.

이 문서는 전자 메일 구독을 배달하는 동안 API 함수 호출에 AuthzInitializeContextFromSid 발생할 수 있는 문제를 resolve 데 도움이 됩니다.

원래 제품 버전: SQL Server
원래 KB 번호: 842423

요약

이 문서에서는 SQL Server Reporting Services Microsoft SQL Server Reporting Services 및 Power BI Report Server 발생할 수 있는 문제에 대한 원인 및 가능한 해결에 대해 설명합니다. 도메인 사용자 계정을 사용하여 전자 메일 구독을 만들고 처리하려고 할 때 문제는 Authz.dll 파일의 AuthzInitializeContextFromSid API 함수 호출이 성공하지 못할 때 발생합니다.

참고

이 문제는 Windows Server 2008에서 발생하지 않습니다.

이 문서에서 설명하는 해결 방법은 다음과 같습니다.

도메인 사용자 계정으로 실행되도록 Reporting Services Windows 서비스를 구성하는 방법입니다. 문제가 resolve 않는 경우 다음 방법 중 하나를 사용해야 합니다.

  • 모든 사용자 계정 및 도메인의 모든 그룹에 대해 도메인 사용자 계정에 대한 읽기 권한을 부여합니다.
  • 특히 사용자 계정 또는 사용자가 구성원인 그룹에 대해 도메인 사용자 계정에 대한 읽기 권한을 부여합니다.

소개

이 문서에서는 전자 메일 구독을 배달하는 동안 발생하는 API 함수 호출과 AuthzInitializeContextFromSid 관련된 문제에 대해 설명합니다. 이 문서에서는 문제에 대한 몇 가지 가능한 해결 방법도 설명합니다.

세부 정보

전자 메일 구독에 대한 전자 메일을 배달하는 동안 Reporting Services 프로그램은 Authz.dll 파일에 정의된 API 함수를 호출 AuthzInitializeContextFromSid 할 수 있습니다. 다음 조건 중 하나가 true인 경우 Reporting Services 프로그램에서 API 함수를 호출 AuthzInitializeContextFromSid 할 수 있습니다.

  • 보고서가 전자 메일에 포함됩니다.
  • 보고서가 전자 메일에 첨부됩니다.

Reporting Services Windows 서비스의 서비스 로그온 계정과 다른 도메인 사용자 계정을 사용하여 전자 메일 구독을 만들고 처리하는 경우 API 함수 호출이 AuthzInitializeContextFromSid 실패할 수 있습니다.

함수 호출이 실패하면 문제를 resolve 위해 Reporting Services 실행 중인 컴퓨터의 도메인에서 설정을 구성해야 할 수 있습니다.

Reporting Services 프로그램은 API 함수를 호출 AuthzInitializeContextFromSid 하여 구독을 만드는 데 사용된 사용자 계정에 보고서를 볼 수 있는 올바른 권한이 있는지 확인합니다. 이 확인은 사용자가 URL을 사용하여 보고서에 액세스하려고 할 때 Reporting Services 사용자 권한 확인을 수행하기 때문에 전자 메일에 보고서에 대한 링크 URL만 포함된 경우에는 필요하지 않습니다.

API 함수 호출은 AuthzInitializeContextFromSid API 함수 호출에 지정된 AuthzInitializeContextFromSid SID(보안 식별 번호)의 tokenGroupsGlobalAndUniversal(TGGAU) 특성을 읽어 현재 사용자의 Windows 그룹 멤버 자격 정보를 확인합니다. Reporting Services 를 호출합니다.AuthzInitializeContextFromSid API 함수는 Reporting Services Windows 서비스의 서비스 로그온 계정의 보안 컨텍스트를 사용합니다. 따라서 Reporting Services Windows 서비스를 실행하는 데 사용하는 사용자 계정에는 전자 메일 구독을 만들고 처리하는 데 사용되는 사용자 계정의 특성을 읽을 TGGAU 수 있는 충분한 권한이 있어야 합니다.

컴퓨터가 Authz.dll 파일에서 API 함수 호출에 액세스하고 실행 AuthzInitializeContextFromSid 하도록 올바르게 구성되지 않은 경우 오류 메시지가 표시될 수 있습니다. 또한 오류 메시지가 Reporting Services 로그 파일에 기록될 수 있습니다. 발생한 오류를 확인하려면 다음 단계를 수행합니다.

  1. ReportServerService_ 타임스탬프.log 파일을 엽니다. authz라는 단어를 검색합니다.

    참고

    기본적으로 ReportServerService_ 타임스탬프.log 파일은 에 있습니다 <Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting Services\Logfiles folder.

    ReportServerService_ Timestamp.log 파일에서 다음과 유사한 오류 메시지를 확인할 수 있습니다.

    • 오류 메시지 1

      ReportingServicesService!library!718!06/16/2004-00:00:03:: e ERROR: Throw Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: 보고서 서버에 구성 오류가 발생했습니다. 로그 파일의 자세한 내용, AuthzInitializeContextFromSid: Win32 오류: 5; 가능한 이유 - 서비스 계정에 도메인 사용자 SID를 검사 권한이 없습니다.; 정보: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: 보고서 서버에 구성 오류가 발생했습니다. 자세한 내용은 로그 파일에 있습니다.

    • 오류 메시지 2

      ReportingServicesService!library!7e4!05/24/2004-10:00:22:: e ERROR: Throw Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: 보고서 서버에 구성 오류가 발생했습니다. 로그 파일의 자세한 내용, AuthzInitializeContextFromSid: Win32 오류: 1722; 정보: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: 보고서 서버에 구성 오류가 발생했습니다. 자세한 내용은 로그 파일에 있습니다.

  2. 오류 메시지를 발생시킨 전자 메일 구독을 수정합니다. 전자 메일에 보고서를 포함하거나 첨부하지 마세요. 보고서에 대한 링크를 사용합니다. 수정된 구독을 처리한 후 오류 메시지가 표시되지 않으면 API 함수 호출이 실패하여 오류가 발생했음을 AuthzInitializeContextFromSid 확인할 수 있습니다.

이 문제를 해결하려면 다음 방법 중 하나를 사용하세요.

다음 조건이 충족되면 메서드 1을 사용할 수 있습니다.

  • Reporting Services Windows 서비스가 네트워크 서비스 계정으로 실행되고 있습니다.
  • Reporting Services Windows 서비스가 실행 중인 계정을 변경하지 않으려는 경우 일반적인 해결을 위해 메서드 2를 사용할 수 있습니다. 메서드 2가 문제를 resolve 않으면 메서드 3을 사용합니다.

방법 1

  1. Active Directory 사용자 및 컴퓨터 스냅인을 사용하여 Windows 2000 이전 호환성 액세스 그룹에 Windows 계정을 추가합니다.
  2. Active Directory 사용자 및 컴퓨터 스냅인을 사용하여 Windows 권한 부여 액세스 그룹에 Windows 계정을 추가합니다.
  3. Reporting Services 실행 중인 컴퓨터를 다시 시작합니다.

참고

  • 1단계와 2단계의 Windows 계정은 Reporting Services 실행하는 데 사용하는 계정입니다.
  • 이러한 그룹에 계정을 추가하면 Reporting Services TGGAU 특성에 액세스할 수 있습니다.
  • 이 메서드는 사용자 또는 그룹에 대한 권한을 수정할 필요가 없습니다.

방법 2

도메인 사용자 계정으로 실행되도록 Reporting Services Windows 서비스를 구성합니다.

참고

Reporting Services Windows 서비스를 실행하는 데 사용되는 사용자 계정을 변경하려고 하면 Reporting Services 추적 로그에 오류 메시지가 기록될 수 있습니다.

방법 3

Reporting Services 실행 중인 컴퓨터의 도메인에서 설정을 구성합니다. 이렇게 하려면 다음 방법 중 하나를 사용하세요.

도메인의 모든 사용자 계정 및 모든 그룹에 대한 읽기 권한 부여

Reporting Services Windows 서비스를 실행하는 데 사용하는 사용자 계정에 대한 읽기 권한을 부여하여 모든 사용자 계정 및 도메인의 모든 그룹에서 특성을 읽어 TGGAU 문제를 resolve 수 있습니다. 이렇게 하려면 사용 중인 운영 체제에 따라 다음 섹션 중 하나의 정보를 사용합니다.

Microsoft Windows 2000 도메인의 경우

도메인이 Windows 2000 이전 호환성 액세스 모드에 있는 경우 EVERYONE 그룹은 모든 사용자 계정 및 모든 그룹에 대한 특성에 TGGAU 대한 읽기 권한이 있습니다. 따라서 Reporting Services Windows 서비스를 실행하는 데 사용하는 사용자 계정은 Reporting Services 전자 메일 구독을 만드는 데 사용하는 사용자 계정의 특성에 액세스할 수 TGGAU 있습니다.

도메인이 기본 모드라고도 하는 Windows 2000 이전 호환성 액세스 모드에 없는 경우 Reporting Services 구독을 만드는 데 사용하는 사용자 계정의 특성을 읽을 수 있도록 Reporting Services Windows 서비스를 실행하는 데 사용되는 사용자 계정에 대한 읽기 TGGAU 권한을 부여해야 합니다. Windows 2000 이전 호환성 그룹을 시뮬레이션하는 도메인 로컬 그룹을 만들고, Reporting Services Windows 서비스를 실행하는 데 사용하는 사용자 계정을 이 그룹에 추가한 다음, 모든 사용자 계정에 대해 그룹에 대한 읽기 권한을 부여할 수 있습니다. 이렇게 하려면 다음과 같이 하십시오.

참고

이러한 단계를 수행하려면 도메인에 대한 관리자 권한이 있어야 합니다.

  1. 시작을 클릭하고 프로그램, 관리 도구를 차례로 가리킨 다음 Active Directory 사용자 및 컴퓨터를 클릭합니다.
  2. Active Directory 사용자 및 컴퓨터 창의 왼쪽 창에서 DomainName을 확장합니다.
  3. 사용자를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 그룹을 클릭합니다.
  4. 새 개체 - 그룹 대화 상자의 그룹 이름 상자에 MyAuthZGrp를 입력합니다.
  5. 그룹 scope아래에서 도메인 로컬 옵션을 선택한 다음 확인을 클릭합니다. MyAuthZGrp 그룹이 오른쪽 창에 나타날 수 있습니다.
  6. Active Directory 사용자 및 컴퓨터 창의 왼쪽 창에서 사용자 폴더를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
  7. 사용자 속성 대화 상자에서 보안 탭을 클릭합니다.
  8. 추가를 클릭합니다.
  9. 사용자, 컴퓨터 또는 그룹 선택 대화 상자에서 5단계에서 만든 그룹을 선택합니다.
  10. 추가를 클릭한 다음 OK를 클릭합니다.
  11. 9단계에서 선택한 사용자 계정에 읽기 권한을 부여합니다.

Microsoft Windows Server 2003 도메인의 경우

도메인이 Windows 2000 기능 수준에 있는 경우 EVERYONE 그룹에는 모든 사용자 계정 및 그룹의 TGGAU 특성에 대한 읽기 권한이 있습니다. 따라서 Reporting Service 서비스 계정에는 전자 메일 구독을 만든 사용자 계정에 대한 올바른 권한이 있습니다.

도메인이 Windows Server 2003 기능 수준에 있는 경우 WAA 그룹(Windows 권한 부여 액세스 그룹)에는 모든 사용자 계정 및 그룹의 TGGAU 특성에 대한 읽기 권한이 있습니다. 따라서 waA 그룹에 Reporting Services 서비스 계정을 추가하는 경우 Reporting Services 서비스 계정에는 전자 메일 구독을 만들 수 있는 사용자 계정의 TGGAU 특성에 대한 읽기 권한이 있습니다.

WAA 그룹에 Reporting Services 서비스 계정을 추가하려면 다음 단계를 수행합니다.

  1. 도메인 컨트롤러에서 시작을 클릭하고 프로그램을 가리킨 다음 관리 도구를 가리킨 다음 Active Directory 사용자 및 컴퓨터 클릭합니다.
  2. Active Directory 사용자 및 컴퓨터 창에서 DomainName을 확장한 다음 사용자 또는 다른 적절한 OU(organization 단위)를 클릭합니다.
  3. Reporting Services 서비스 계정을 두 번 클릭합니다.
  4. 속성 대화 상자에서 멤버 탭을 클릭합니다.
  5. 구성원 탭에서 추가를 클릭합니다.
  6. 그룹 선택 대화 상자의 선택할 개체 이름 입력 아래에 Windows 권한 부여 액세스 그룹을 입력하고 확인을 클릭합니다.
  7. Reporting Services 서비스를 다시 시작합니다.

Reporting Services 구독을 만들 수 있는 특정 사용자 계정 또는 그룹에 읽기 권한 부여

모든 사용자 계정 및 그룹의 TGGAU 특성에 읽기 권한을 부여하지 않을 수 있습니다. 대신 특정 사용자 계정 또는 그룹의 TGGAU 특성에 읽기 권한을 부여할 수 있습니다.

참고

  • Reporting Services 구독을 실행하는 데 사용하는 사용자 계정은 구독을 만들 때 보고서 관리자에 로그온하는 Windows 사용자 계정입니다.
  • Reporting Services 서비스 계정이 WAA 그룹에 있는 경우에는 이러한 단계가 필요하지 않습니다.
  • Reporting Services 전자 메일 구독을 만들 수 있는 모든 사용자 계정 또는 그룹에 대해 다음 단계를 수행해야 합니다.

특정 사용자 계정 또는 그룹의 특성에 TGGAU 읽기 권한을 부여하려면 다음 단계를 수행합니다.

  1. 도메인 컨트롤러에서 시작을 클릭하고 프로그램을 가리킨 다음 관리 도구를 가리킨 다음 Active Directory 사용자 및 컴퓨터 클릭합니다.
  2. 보기 메뉴에서 고급 기능 항목이 선택되어 있는지 확인합니다.
  3. Reporting Services 구독을 만들 수 있는 사용자 계정 또는 그룹을 두 번 클릭합니다.
  4. 속성 대화 상자에서 보안 탭을 클릭합니다.
  5. 보안 탭에서 추가를 클릭합니다.
  6. 사용자, 컴퓨터 또는 그룹 선택 대화 상자에서 선택할 개체 이름 입력 아래에 Reporting Services 서비스 계정을 입력한 다음 확인을 클릭합니다.
  7. 속성 대화 상자에서 그룹 또는 사용자 이름 아래의 6단계에서 추가한 사용자 계정을 클릭합니다.
  8. 사용 권한사용자 아래에서 읽기 권한 옆에 있는 검사 허용 상자를 선택하고 확인을 클릭합니다.

참고

변경 내용은 즉시 적용되지 않을 수 있습니다.

컴퓨터에서 도메인 설정을 구성하는 방법

도메인 구성은 Microsoft Windows 도메인의 작업 모드에 따라 달라집니다. 또한 Windows 도메인에서 고급 기능을 켜야 합니다. 도메인 컨트롤러에서 도메인 작업 모드를 찾고 고급 기능을 켜려면 다음 단계를 수행합니다.

  1. 시작을 클릭하고 프로그램, 관리 도구를 차례로 가리킨 다음 Active Directory 사용자 및 컴퓨터를 클릭합니다.
  2. Active Directory 사용자 및 컴퓨터 창의 왼쪽 창에서 DomainName을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
  3. ****DomainName속성 대화 상자의 일반 탭에서 도메인 작업 모드 텍스트 상자를 참조하세요.

도메인 작업 모드 텍스트 상자에는 도메인이 현재 사용 중인 도메인 작업 모드가 표시됩니다. 4. Active Directory 사용자 및 컴퓨터 창의 왼쪽 창에서 DomainName을 클릭합니다. 5. 보기 메뉴에서 고급 기능을 클릭합니다. 사용자 계정의 권한 부여에 액세스해야 하는 API에 대한 자세한 내용은 일부 애플리케이션 및 API에서 계정 개체에 대한 권한 부여 정보에 액세스해야 합니다.를 참조하세요.