Una chiamata alla funzione API AuthzInitializeContextFromSid non riesce durante il recapito di una sottoscrizione di posta elettronica in SQL Server Reporting Services

Questo articolo consente di risolvere il problema che potrebbe verificarsi con la chiamata di AuthzInitializeContextFromSid funzione API durante il recapito di una sottoscrizione di posta elettronica.

Versione originale del prodotto: SQL Server
Numero KB originale: 842423

Riepilogo

Questo articolo illustra la causa e alcune possibili soluzioni per un problema che può verificarsi in Microsoft SQL Server Reporting Services e Server di report di Power BI, in SQL Server Reporting Services quando si tenta di creare ed elaborare una sottoscrizione di posta elettronica usando un account utente di dominio. Il problema si verifica quando una AuthzInitializeContextFromSid chiamata di funzione API nel file Authz.dll non riesce.

Nota

Questo problema non si verifica in Windows Server 2008.

Le soluzioni illustrate in questo articolo sono le seguenti:

Come configurare l'Reporting Services servizio Windows per l'esecuzione con un account utente di dominio. Se il problema non viene risolto, è necessario usare anche uno dei metodi seguenti:

  • Concedere l'autorizzazione di lettura per l'account utente di dominio per tutti gli account utente e tutto il gruppo del dominio.
  • Concedere l'autorizzazione di lettura per l'account utente di dominio in modo specifico in un account utente o in un gruppo di cui l'utente è membro.

Introduzione

Questo articolo illustra un problema associato alla chiamata di AuthzInitializeContextFromSid funzione API che si verifica durante il recapito di una sottoscrizione di posta elettronica. Questo articolo illustra anche alcune possibili soluzioni per il problema.

Informazioni dettagliate

Durante la distribuzione di un messaggio di posta elettronica per una sottoscrizione di posta elettronica, il programma Reporting Services può chiamare la AuthzInitializeContextFromSid funzione API definita nel file Authz.dll. Il programma Reporting Services può chiamare la AuthzInitializeContextFromSid funzione API se si verifica una delle condizioni seguenti:

  • Un report viene incorporato nel messaggio di posta elettronica.
  • Al messaggio di posta elettronica è allegato un report.

Se si crea ed elabora la sottoscrizione di posta elettronica usando un account utente di dominio diverso dall'account di accesso al servizio del servizio Reporting Services Windows, la chiamata alla AuthzInitializeContextFromSid funzione API potrebbe non riuscire.

Se la chiamata di funzione non riesce, potrebbe essere necessario configurare le impostazioni nel dominio del computer che esegue Reporting Services per risolvere il problema.

Il programma Reporting Services chiama la AuthzInitializeContextFromSid funzione API per verificare se l'account utente usato per creare la sottoscrizione dispone ancora delle autorizzazioni corrette per visualizzare il report. Questa verifica non è necessaria quando il messaggio di posta elettronica contiene solo un collegamento, un URL, al report perché Reporting Services esegue la verifica delle autorizzazioni utente quando l'utente tenta di accedere al report usando l'URL.

La AuthzInitializeContextFromSid chiamata di funzione API legge l'attributo tokenGroupsGlobalAndUniversal (TGGAU) del numero di identificazione di sicurezza (SID) specificato nella AuthzInitializeContextFromSid chiamata alla funzione API per determinare le informazioni sull'appartenenza al gruppo di Windows per l'utente corrente. Reporting Services chiama il metodo AuthzInitializeContextFromSid Funzione API usando il contesto di sicurezza dell'account di accesso del servizio del servizio windows Reporting Services. Di conseguenza, l'account utente usato per eseguire il servizio windows Reporting Services deve disporre di autorizzazioni sufficienti per leggere l'attributo TGGAU nell'account utente usato per creare ed elaborare le sottoscrizioni di posta elettronica.

Se il computer non è configurato correttamente per l'accesso e per eseguire la AuthzInitializeContextFromSid chiamata di funzione API nel file Authz.dll, è possibile che venga visualizzato un messaggio di errore. È inoltre possibile scrivere un messaggio di errore nel file di log Reporting Services. Per determinare l'errore che si è verificato, seguire questa procedura:

  1. Aprire il file .log timestamp ReportServerService_. Cercare la parola authz.

    Nota

    Per impostazione predefinita, il file ReportServerService_ Timestamp.log si trova in <Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting Services\Logfiles folder.

    Nel file ReportServerService_ Timestamp.log è possibile che vengano visualizzati messaggi di errore simili ai seguenti:

    • Messaggio di errore 1

      ReportingServicesService!library!718!06/16/2004-00:00:03:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: The Report Server has encountered a configuration error; altri dettagli nei file di log, AuthzInitializeContextFromSid: Errore Win32: 5; possibile motivo: l'account del servizio non dispone dei diritti per controllare i SID degli utenti di dominio. Info: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Il server di report ha rilevato un errore di configurazione; maggiori dettagli nei file di log.

    • Messaggio di errore 2

      ReportingServicesService!library!7e4!05/24/2004-10:00:22:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: The Report Server has encountered a configuration error; altri dettagli nei file di log, AuthzInitializeContextFromSid: Errore Win32: 1722; Info: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Il server di report ha rilevato un errore di configurazione; maggiori dettagli nei file di log.

  2. Modificare la sottoscrizione di posta elettronica che ha causato il messaggio di errore. Non incorporare o allegare un report nel messaggio di posta elettronica. Usare un collegamento al report. Dopo aver elaborato la sottoscrizione modificata, se non viene visualizzato un messaggio di errore, è possibile confermare che l'errore si è verificato perché la chiamata di AuthzInitializeContextFromSid funzione API non è riuscita.

Per risolvere il problema, utilizzare uno dei metodi riportati di seguito:

Se le condizioni seguenti sono vere, è possibile utilizzare il metodo 1:

  • L'Reporting Services servizio Windows è in esecuzione con l'account del servizio di rete.
  • Non si vuole modificare l'account in cui è in esecuzione il servizio Reporting Services Windows. È possibile usare il metodo 2 per una risoluzione generale. Se il metodo 2 non risolve il problema, usare il metodo 3.

Metodo 1

  1. Aggiungere l'account di Windows al gruppo Accesso compatibilità precedenti a Windows 2000 usando lo snap-in Utenti e computer di Active Directory.
  2. Aggiungere l'account di Windows al gruppo accesso all'autorizzazione di Windows usando lo snap-in Utenti e computer di Active Directory.
  3. Riavviare il computer che esegue Reporting Services.

Nota

  • L'account di Windows nel passaggio 1 e nel passaggio 2 è l'account usato per eseguire Reporting Services.
  • Dopo aver aggiunto l'account a questi gruppi, è garantito che Reporting Services possa accedere all'attributo TGGAU.
  • Questo metodo non richiede la modifica delle autorizzazioni per utenti o gruppi.

Metodo 2

Configurare il servizio windows Reporting Services da eseguire con un account utente di dominio.

Nota

È possibile che venga scritto un messaggio di errore nel log di traccia Reporting Services quando si tenta di modificare l'account utente usato per eseguire il servizio Windows Reporting Services.

Metodo 3

Configurare le impostazioni nel dominio del computer che esegue Reporting Services. A tale scopo, utilizzare uno dei seguenti metodi.

Concedere l'autorizzazione di lettura per tutti gli account utente e per tutti i gruppi nel dominio

È possibile risolvere il problema concedendo autorizzazioni di lettura per l'account utente usato per eseguire il servizio windows Reporting Services per leggere l'attributo TGGAU in tutti gli account utente e in tutti i gruppi del dominio. A tale scopo, usare le informazioni in una delle sezioni seguenti, a seconda del sistema operativo in uso.

Per un dominio di Microsoft Windows 2000

Se il dominio si trova in una modalità di accesso di compatibilità pre-Windows 2000, il gruppo EVERYONE dispone dell'autorizzazione di lettura per l'attributo TGGAU per tutti gli account utente e tutti i gruppi. Di conseguenza, l'account utente usato per eseguire il servizio Reporting Services Windows ha accesso all'attributo TGGAU nell'account utente usato Reporting Services per creare la sottoscrizione di posta elettronica.

Se il dominio non è in una modalità di accesso di compatibilità pre-Windows 2000, nota anche come modalità nativa, è necessario concedere l'autorizzazione di lettura per l'account utente usato per eseguire il servizio Windows Reporting Services in modo che possa leggere l'attributo TGGAU nell'account utente usato Reporting Services per creare la sottoscrizione. È possibile creare un gruppo locale di dominio che simula il gruppo di compatibilità pre-Windows 2000, aggiungere l'account utente usato per eseguire il servizio Windows Reporting Services a questo gruppo e quindi concedere le autorizzazioni di lettura per il gruppo su tutti gli account utente. A tal fine, attenersi alla seguente procedura:

Nota

Per eseguire questa procedura, è necessario disporre delle autorizzazioni di amministratore per il dominio.

  1. Fare clic sul pulsante Start, scegliere Programmi, Strumenti di amministrazione e infine Utenti e computer di Active Directory.
  2. Nella finestra Utenti e computer di Active Directory espandere DomainName nel riquadro sinistro.
  3. Fare clic con il pulsante destro del mouse su Utenti, scegliere Nuovo e quindi fare clic su Gruppo.
  4. Nella finestra di dialogo Nuovo oggetto - Gruppo digitare MyAuthZGrp nella casella Nome gruppo .
  5. In Ambito gruppo selezionare l'opzione Dominio locale e quindi fare clic su OK. Il gruppo MyAuthZGrp può essere visualizzato nel riquadro destro.
  6. Nel riquadro sinistro della finestra Utenti e computer di Active Directory fare clic con il pulsante destro del mouse sulla cartella Utenti e quindi scegliere Proprietà.
  7. Nella finestra di dialogo Proprietà utenti fare clic sulla scheda Sicurezza .
  8. Fare clic su Aggiungi.
  9. Nella finestra di dialogo Seleziona utenti, computer o gruppi selezionare il gruppo creato nel passaggio 5.
  10. Fare clic su Aggiungi e quindi su OK.
  11. Concedere l'autorizzazione lettura all'account utente selezionato nel passaggio 9.

Per un dominio di Microsoft Windows Server 2003

Se il dominio si trova a un livello di funzionalità di Windows 2000, il gruppo EVERYONE dispone delle autorizzazioni di lettura per l'attributo TGGAU di tutti gli account utente e i gruppi. Di conseguenza, l'account del servizio Reporting Service dispone delle autorizzazioni corrette per l'account utente che ha creato la sottoscrizione di posta elettronica.

Se il dominio si trova a un livello di funzionalità di Windows Server 2003, il gruppo di accesso all'autorizzazione di Windows (gruppo WAA) dispone delle autorizzazioni di lettura per l'attributo TGGAU di tutti gli account utente e i gruppi. Pertanto, se si aggiunge l'account del servizio Reporting Services al gruppo WAA, l'account del servizio Reporting Services dispone delle autorizzazioni di lettura per l'attributo TGGAU degli account utente che possono creare sottoscrizioni di posta elettronica.

Per aggiungere l'account del servizio Reporting Services al gruppo WAA, seguire questa procedura:

  1. Nel controller di dominio fare clic sul pulsante Start, scegliere Programmi, Strumenti di amministrazione e quindi fare clic su Utenti e computer di Active Directory.
  2. Nella finestra Utenti e computer di Active Directory espandere DomainName e quindi fare clic su Utenti o su un'altra unità organizzativa appropriata.
  3. Fare doppio clic sull'account del servizio Reporting Services.
  4. Nella finestra di dialogo Proprietà fare clic sulla scheda Membro di .
  5. Nella scheda Membro di fare clic su Aggiungi.
  6. Nella finestra di dialogo Seleziona gruppi digitare Gruppo di accesso all'autorizzazione windows in Immettere i nomi degli oggetti da selezionare e quindi fare clic su OK.
  7. Riavviare il servizio Reporting Services.

Concedere autorizzazioni di lettura a un account utente o a un gruppo specifico in grado di creare una sottoscrizione Reporting Services

Potrebbe non essere necessario concedere autorizzazioni di lettura all'attributo TGGAU di tutti gli account utente e i gruppi. È invece possibile concedere autorizzazioni di lettura all'attributo TGGAU di un account utente o un gruppo specifico.

Nota

  • L'account utente usato Reporting Services per eseguire la sottoscrizione è l'account utente di Windows che accede a Gestione report al momento della creazione della sottoscrizione.
  • Questi passaggi non sono necessari se l'account del servizio Reporting Services si trova nel gruppo WAA.
  • È necessario seguire questa procedura per ogni account utente o gruppo che può creare una sottoscrizione di posta elettronica in Reporting Services.

Per concedere autorizzazioni di lettura all'attributo TGGAU di un account utente o di un gruppo specifico, seguire questa procedura:

  1. In un controller di dominio fare clic sul pulsante Start, scegliere Programmi, Strumenti di amministrazione e quindi fare clic su Utenti e computer di Active Directory.
  2. Nel menu Visualizza verificare che l'elemento Funzionalità avanzate sia selezionato.
  3. Fare doppio clic sull'account utente o sul gruppo che può creare una sottoscrizione Reporting Services.
  4. Nella finestra di dialogo Proprietà fare clic sulla scheda Sicurezza.
  5. Nella scheda Sicurezza fare clic su Aggiungi.
  6. Nella finestra di dialogo Seleziona utenti, computer o gruppi digitare l'account del servizio Reporting Services in Immettere i nomi degli oggetti da selezionare e quindi fare clic su OK.
  7. Nella finestra di dialogo Proprietà fare clic sull'account utente aggiunto nel passaggio 6 in Nomi di gruppo o utente.
  8. In Autorizzazioni per Utente fare clic per selezionare la casella di controllo Consenti accanto all'autorizzazione Lettura e quindi fare clic su OK.

Nota

Le modifiche potrebbero non essere effettive immediatamente.

Come configurare le impostazioni di dominio nel computer

La configurazione del dominio dipende dalla modalità operativa del dominio di Microsoft Windows. Inoltre, è necessario attivare le funzionalità avanzate nel dominio Windows. Per trovare la modalità operativa del dominio nel controller di dominio e attivare le funzionalità avanzate, seguire questa procedura:

  1. Fare clic sul pulsante Start, scegliere Programmi, Strumenti di amministrazione e infine Utenti e computer di Active Directory.
  2. Nella finestra Utenti e computer di Active Directory fare clic con il pulsante destro del mouse su DomainName nel riquadro sinistro e quindi scegliere Proprietà.
  3. Nella finestra di dialogoProprietà ****DomainName vedere la casella di testo Modalità operazione dominio nella scheda Generale .

La casella di testo Modalità operazione dominio mostra la modalità di operazione di dominio attualmente in uso nel dominio. 4. Nel riquadro sinistro della finestra Utenti e computer di Active Directory fare clic su DomainName. 5. Scegliere Funzionalità avanzate dal menu Visualizza. Per altre informazioni sulle API che richiedono l'accesso all'autorizzazione per gli account utente, vedere Alcune applicazioni e API richiedono l'accesso alle informazioni di autorizzazione sugli oggetti account.