Ein Aufruf der AuthzInitializeContextFromSid-API-Funktion schlägt während der Übermittlung eines E-Mail-Abonnements in SQL Server Reporting Services

Dieser Artikel hilft Ihnen, das Problem zu beheben, das beim Aufruf der AuthzInitializeContextFromSid API-Funktion während der Übermittlung eines E-Mail-Abonnements auftreten kann.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 842423

Zusammenfassung

In diesem Artikel werden die Ursache und einige mögliche Lösungen für ein Problem erläutert, das in Microsoft SQL Server Reporting Services und Power BI-Berichtsserver auftreten kann, in SQL Server Reporting Services wenn Sie versuchen, ein E-Mail-Abonnement mit einem Domänenbenutzerkonto zu erstellen und zu verarbeiten. Das Problem tritt auf, wenn ein AuthzInitializeContextFromSid API-Funktionsaufruf in der Authz.dll-Datei nicht erfolgreich ist.

Hinweis

Dieses Problem tritt in Windows Server 2008 nicht auf.

In diesem Artikel werden die folgenden Lösungen erläutert:

Konfigurieren des Reporting Services Windows-Diensts für die Ausführung unter einem Domänenbenutzerkonto. Wenn das Problem dadurch nicht behoben wird, müssen Sie auch eine der folgenden Methoden verwenden:

  • Erteilen Sie die Leseberechtigung für das Domänenbenutzerkonto für alle Benutzerkonten und die gesamte Gruppe der Domäne.
  • Erteilen Sie die Leseberechtigung für das Domänenbenutzerkonto speziell für ein Benutzerkonto oder für eine Gruppe, in der der Benutzer Mitglied ist.

Einführung

In diesem Artikel wird ein Problem behandelt, das mit dem AuthzInitializeContextFromSid API-Funktionsaufruf verbunden ist, der während der Übermittlung eines E-Mail-Abonnements auftritt. In diesem Artikel werden auch einige mögliche Lösungen für das Problem erläutert.

Detailinformationen

Beim Übermitteln einer E-Mail für ein E-Mail-Abonnement kann das Reporting Services-Programm die AuthzInitializeContextFromSid API-Funktion aufrufen, die in der Authz.dll-Datei definiert ist. Das Reporting Services-Programm kann die AuthzInitializeContextFromSid API-Funktion aufrufen, wenn eine der folgenden Bedingungen zutrifft:

  • Ein Bericht ist in die E-Mail eingebettet.
  • An die E-Mail wird ein Bericht angefügt.

Wenn Sie das E-Mail-Abonnement mithilfe eines Domänenbenutzerkontos erstellen und verarbeiten, das sich vom Dienstanmeldekonto des Reporting Services Windows-Diensts unterscheidet, schlägt der AuthzInitializeContextFromSid API-Funktionsaufruf möglicherweise fehl.

Wenn der Funktionsaufruf fehlschlägt, müssen Sie möglicherweise die Einstellungen in der Domäne des Computers konfigurieren, auf dem Reporting Services ausgeführt wird, um das Problem zu beheben.

Das Reporting Services-Programm ruft die AuthzInitializeContextFromSid API-Funktion auf, um zu überprüfen, ob das Benutzerkonto, das zum Erstellen des Abonnements verwendet wurde, noch über die richtigen Berechtigungen zum Anzeigen des Berichts verfügt. Diese Überprüfung ist nicht erforderlich, wenn die E-Mail nur einen Link , eine URL, zum Bericht enthält, da Reporting Services die Überprüfung der Benutzerberechtigungen durchführt, wenn der Benutzer versucht, mithilfe der URL auf den Bericht zuzugreifen.

Der AuthzInitializeContextFromSid API-Funktionsaufruf liest das attribut tokenGroupsGlobalAndUniversal (TGGAU) der Sicherheits-ID (SID), die AuthzInitializeContextFromSid im API-Funktionsaufruf angegeben ist, um Informationen zur Windows-Gruppenmitgliedschaft für den aktuellen Benutzer zu bestimmen. Reporting Services ruft die AuthzInitializeContextFromSid API-Funktion mithilfe des Sicherheitskontexts des Dienstanmeldungskontos des Reporting Services Windows-Diensts. Daher muss das Benutzerkonto, das Sie zum Ausführen des Reporting Services Windows-Diensts verwenden, über ausreichende Berechtigungen zum Lesen des TGGAU Attributs für das Benutzerkonto verfügen, das zum Erstellen und Verarbeiten der E-Mail-Abonnements verwendet wird.

Wenn der Computer nicht ordnungsgemäß für den Zugriff auf und für die Ausführung des AuthzInitializeContextFromSid API-Funktionsaufrufs in der Authz.dll-Datei konfiguriert ist, erhalten Sie möglicherweise eine Fehlermeldung. Darüber hinaus kann eine Fehlermeldung in die Reporting Services Protokolldatei geschrieben werden. Führen Sie die folgenden Schritte aus, um zu ermitteln, welcher Fehler aufgetreten ist:

  1. Öffnen Sie die Datei ReportServerService_ Zeitstempel.log. Suchen Sie nach dem Wort authz.

    Hinweis

    Standardmäßig befindet sich die datei ReportServerService_ Timestamp.log im <Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting Services\Logfiles folder.

    In der Datei ReportServerService_ Timestamp.log werden möglicherweise Fehlermeldungen angezeigt, die den folgenden ähneln:

    • Fehlermeldung 1

      ReportingServicesService!library!718!06/16/2004-00:00:03:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Der Berichtsserver hat einen Konfigurationsfehler gefunden; weitere Details in den Protokolldateien, AuthzInitializeContextFromSid: Win32-Fehler: 5; möglicher Grund: Das Dienstkonto verfügt nicht über Berechtigungen zum Überprüfen der Domänenbenutzer-SIDs. Info: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Auf dem Berichtsserver ist ein Konfigurationsfehler aufgetreten; Weitere Informationen finden Sie in den Protokolldateien.

    • Fehlermeldung 2

      ReportingServicesService!library!7e4!05/24/2004-10:00:22:: e ERROR: Auslösen von Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Auf dem Berichtsserver ist ein Konfigurationsfehler aufgetreten; weitere Details in den Protokolldateien, AuthzInitializeContextFromSid: Win32-Fehler: 1722; Info: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Auf dem Berichtsserver ist ein Konfigurationsfehler aufgetreten; Weitere Informationen finden Sie in den Protokolldateien.

  2. Ändern Sie das E-Mail-Abonnement, das die Fehlermeldung verursacht hat. Einen Bericht nicht in die E-Mail einbetten oder anfügen. Verwenden Sie einen Link zum Bericht. Wenn Sie nach der Verarbeitung des geänderten Abonnements keine Fehlermeldung erhalten, können Sie bestätigen, dass der Fehler aufgetreten ist, weil der AuthzInitializeContextFromSid API-Funktionsaufruf fehlgeschlagen ist.

Verwenden Sie eine der folgenden Methoden, um das Problem zu beheben.

Sie können Methode 1 verwenden, wenn die folgenden Bedingungen erfüllt sind:

  • Der Reporting Services Windows-Dienst wird unter dem Netzwerkdienstkonto ausgeführt.
  • Sie möchten das Konto, unter dem der Reporting Services Windows-Dienst ausgeführt wird, nicht ändern. Sie können Methode 2 für eine allgemeine Lösung verwenden. Wenn Methode 2 das Problem nicht löst, verwenden Sie Methode 3.

Methode 1

  1. Fügen Sie das Windows-Konto mithilfe des Active Directory-Benutzer und -Computer-Snap-Ins der Gruppe "Pre-Windows 2000 Compatibility Access" (Kompatibilitätszugriff vor Windows 2000) hinzu.
  2. Fügen Sie das Windows-Konto mithilfe des Active Directory-Benutzer und -Computer-Snap-Ins zur Windows-Autorisierungszugriffsgruppe hinzu.
  3. Starten Sie den Computer neu, auf dem Reporting Services ausgeführt wird.

Hinweis

  • Das Windows-Konto in Schritt 1 und in Schritt 2 ist das Konto, das Sie zum Ausführen von Reporting Services verwenden.
  • Nachdem Sie das Konto diesen Gruppen hinzugefügt haben, ist sichergestellt, dass Reporting Services auf das TGGAU-Attribut zugreifen können.
  • Für diese Methode müssen Sie keine Berechtigungen für Benutzer oder Gruppen ändern.

Methode 2

Konfigurieren Sie den Reporting Services Windows-Dienst für die Ausführung unter einem Domänenbenutzerkonto.

Hinweis

Möglicherweise wird eine Fehlermeldung in das Reporting Services Ablaufverfolgungsprotokoll geschrieben, wenn Sie versuchen, das Benutzerkonto zu ändern, das zum Ausführen des Reporting Services Windows-Diensts verwendet wird.

Methode 3

Konfigurieren Sie die Einstellungen in der Domäne des Computers, auf dem Reporting Services ausgeführt wird. Wenden Sie hierzu eine der folgenden Methoden an.

Erteilen der Leseberechtigung für alle Benutzerkonten und für alle Gruppen in der Domäne

Möglicherweise können Sie das Problem beheben, indem Sie leseberechtigungen für das Benutzerkonto erteilen, das Sie zum Ausführen des Reporting Services Windows-Diensts verwenden, um das TGGAU Attribut für alle Benutzerkonten und alle Gruppen in der Domäne zu lesen. Verwenden Sie dazu die Informationen in einem der folgenden Abschnitte, je nachdem, welches Betriebssystem Sie verwenden.

Für eine Microsoft Windows 2000-Domäne

Wenn sich die Domäne in einem Kompatibilitätszugriffsmodus vor Windows 2000 befindet, verfügt die Gruppe JEDER über die Leseberechtigung für das TGGAU Attribut für alle Benutzerkonten und alle Gruppen. Daher hat das Benutzerkonto, das Sie zum Ausführen des Reporting Services Windows-Diensts verwenden, Zugriff auf das TGGAU Attribut des Benutzerkontos, das Reporting Services zum Erstellen des E-Mail-Abonnements verwendet.

Wenn sich die Domäne nicht in einem Kompatibilitätszugriffsmodus vor Windows 2000 befindet, der auch als einheitlicher Modus bezeichnet wird, müssen Sie dem Benutzerkonto, das zum Ausführen des Reporting Services Windows-Diensts verwendet wird, leseberechtigungen erteilen, damit es das Attribut für das TGGAU Benutzerkonto lesen kann, das Reporting Services zum Erstellen des Abonnements verwendet. Sie können eine lokale Domänengruppe erstellen, die die Kompatibilitätsgruppe vor Windows 2000 simuliert, das Benutzerkonto, das Sie zum Ausführen des Reporting Services Windows-Diensts verwenden, dieser Gruppe hinzufügen und dann leseberechtigungen für die Gruppe für alle Benutzerkonten erteilen. Gehen Sie dazu wie folgt vor:

Hinweis

Sie müssen über Administratorberechtigungen für die Domäne verfügen, um diese Schritte ausführen zu können.

  1. Klicken Sie auf Start, zeigen Sie auf Programme und dann auf Verwaltung, und klicken Sie auf Active Directory-Benutzer und -Computer.
  2. Erweitern Sie im fenster Active Directory-Benutzer und -Computer im linken Bereich den Domänennamen.
  3. Klicken Sie mit der rechten Maustaste auf Benutzer, zeigen Sie auf Neu, und klicken Sie dann auf Gruppieren.
  4. Geben Sie im Dialogfeld Neues Objekt – Gruppe den Namen MyAuthZGrp in das Feld Gruppenname ein.
  5. Wählen Sie unter Gruppenbereich die Option Lokale Domäne aus, und klicken Sie dann auf OK. Die Gruppe MyAuthZGrp wird möglicherweise im rechten Bereich angezeigt.
  6. Klicken Sie im linken Bereich des fensters Active Directory-Benutzer und -Computer mit der rechten Maustaste auf den Ordner Benutzer, und klicken Sie dann auf Eigenschaften.
  7. Klicken Sie im Dialogfeld Benutzereigenschaften auf die Registerkarte Sicherheit .
  8. Klicken Sie auf Hinzufügen.
  9. Wählen Sie im Dialogfeld Benutzer, Computer oder Gruppen auswählen die Gruppe aus, die Sie in Schritt 5 erstellt haben.
  10. Klicken Sie auf Hinzufügen und dann auf OK.
  11. Erteilen Sie dem Benutzerkonto, das Sie in Schritt 9 ausgewählt haben, die Berechtigung Lesen .

Für eine Microsoft Windows Server 2003-Domäne

Wenn sich die Domäne auf einer Windows 2000-Funktionsebene befindet, verfügt die Gruppe EVERYONE über Leseberechtigungen für das TGGAU-Attribut aller Benutzerkonten und Gruppen. Daher verfügt das Reporting Service-Dienstkonto über die richtigen Berechtigungen für das Benutzerkonto, das das E-Mail-Abonnement erstellt hat.

Wenn sich die Domäne auf einer Windows Server 2003-Funktionsebene befindet, verfügt die Windows-Autorisierungszugriffsgruppe (WAA-Gruppe) über Leseberechtigungen für das TGGAU-Attribut aller Benutzerkonten und Gruppen. Wenn Sie das Reporting Services-Dienstkonto der WAA-Gruppe hinzufügen, verfügt das Reporting Services-Dienstkonto daher über Leseberechtigungen für das TGGAU-Attribut der Benutzerkonten, die E-Mail-Abonnements erstellen können.

Führen Sie die folgenden Schritte aus, um das Reporting Services-Dienstkonto zur WAA-Gruppe hinzuzufügen:

  1. Klicken Sie auf dem Domänencontroller auf Start, zeigen Sie auf Programme, zeigen Sie auf Verwaltung, und klicken Sie dann auf Active Directory-Benutzer und -Computer.
  2. Erweitern Sie im Active Directory-Benutzer und -Computer Fenster Domänenname, und klicken Sie dann auf Benutzer oder eine andere geeignete organization Einheit (OU).
  3. Doppelklicken Sie auf das Reporting Services-Dienstkonto.
  4. Klicken Sie im Dialogfeld Eigenschaften auf die Registerkarte Member of .
  5. Klicken Sie auf der Registerkarte Mitglied von auf Hinzufügen.
  6. Geben Sie im Dialogfeld Gruppen auswählen unter Geben Sie die auszuwählenden Objektnamen ein den Namen Windows-Autorisierungszugriffsgruppe ein, und klicken Sie dann auf OK.
  7. Starten Sie den Reporting Services-Dienst neu.

Erteilen von Leseberechtigungen für ein bestimmtes Benutzerkonto oder eine bestimmte Gruppe, die ein Reporting Services-Abonnement erstellen kann

Möglicherweise möchten Sie dem TGGAU-Attribut aller Benutzerkonten und Gruppen keine Leseberechtigungen erteilen. Stattdessen können Sie dem TGGAU-Attribut eines bestimmten Benutzerkontos oder einer bestimmten Gruppe Leseberechtigungen erteilen.

Hinweis

  • Das Benutzerkonto, das Reporting Services zum Ausführen des Abonnements verwendet, ist das Windows-Benutzerkonto, das sich beim Erstellen des Abonnements beim Berichts-Manager anmeldet.
  • Diese Schritte sind nicht erforderlich, wenn sich das Reporting Services-Dienstkonto in der WAA-Gruppe befindet.
  • Sie müssen diese Schritte für jedes Benutzerkonto oder jede Gruppe ausführen, die ein E-Mail-Abonnement in Reporting Services erstellen kann.

Führen Sie die folgenden Schritte aus, um dem TGGAU Attribut eines bestimmten Benutzerkontos oder einer bestimmten Gruppe Leseberechtigungen zu erteilen:

  1. Klicken Sie auf einem Domänencontroller auf Start, zeigen Sie auf Programme, zeigen Sie auf Verwaltung, und klicken Sie dann auf Active Directory-Benutzer und -Computer.
  2. Stellen Sie sicher, dass im Menü Ansicht das Element Erweiterte Features ausgewählt ist.
  3. Doppelklicken Sie auf das Benutzerkonto oder die Gruppe, die ein Reporting Services Abonnement erstellen kann.
  4. Klicken Sie im Dialogfeld Eigenschaften auf die Registerkarte Sicherheit.
  5. Klicken Sie auf der Registerkarte Sicherheit auf Hinzufügen.
  6. Geben Sie im Dialogfeld Benutzer, Computer oder Gruppen auswählen das Reporting Services-Dienstkonto unter Geben Sie die auszuwählenden Objektnamen ein, und klicken Sie dann auf OK.
  7. Klicken Sie im Dialogfeld Eigenschaften unter Gruppen- oder Benutzernamen auf das Benutzerkonto, das Sie in Schritt 6 hinzugefügt haben.
  8. Aktivieren Sie unter Berechtigungen fürBenutzer das Kontrollkästchen Zulassen neben der Leseberechtigung , und klicken Sie dann auf OK.

Hinweis

Die Änderungen werden möglicherweise nicht sofort wirksam.

Konfigurieren der Domäneneinstellungen auf dem Computer

Die Konfiguration der Domäne hängt vom Betriebsmodus der Microsoft Windows-Domäne ab. Darüber hinaus müssen Sie die erweiterten Features in der Windows-Domäne aktivieren. Führen Sie die folgenden Schritte aus, um den Domänenbetriebsmodus auf dem Domänencontroller zu ermitteln und die erweiterten Features zu aktivieren:

  1. Klicken Sie auf Start, zeigen Sie auf Programme und dann auf Verwaltung, und klicken Sie auf Active Directory-Benutzer und -Computer.
  2. Klicken Sie im fenster Active Directory-Benutzer und -Computer im linken Bereich mit der rechten Maustaste auf Domänenname, und klicken Sie dann auf Eigenschaften.
  3. SehenSie sich im Dialogfeld Eigenschaften des Domänennamens das Textfeld Domänenvorgangsmodus auf der Registerkarte Allgemein an.

Im Textfeld Domänenvorgangsmodus wird angezeigt, welchen Domänenvorgangsmodus die Domäne derzeit verwendet. 4. Klicken Sie im linken Bereich des fensters Active Directory-Benutzer und -Computer auf Domänenname. 5. Klicken Sie im Menü Ansicht auf Erweiterte Features. Weitere Informationen zu den APIs, die Zugriff auf die Autorisierung für Benutzerkonten erfordern, finden Sie unter Einige Anwendungen und APIs erfordern Zugriff auf Autorisierungsinformationen für Kontoobjekte.