I report basati su SQL non possono essere eseguiti per Microsoft Dynamics CRM

Questo articolo fornisce una soluzione a un errore che si verifica dopo l'installazione dell'Microsoft Dynamics CRM Reporting Extensions.

Si applica a: Microsoft Dynamics CRM 2011, Microsoft Dynamics CRM 2013
Numero KB originale: 2923525

Sintomi

Dopo aver installato l'Microsoft Dynamics CRM Reporting Extensions, i report basati su SQL, ad esempio i report predefiniti, non vengono eseguiti all'interno di Microsoft Dynamics CRM. I file di log SQL Server Reporting Services (SSRS) mostrano il messaggio seguente:

Elaborazione! ReportServer_####! MM/DD/AAAA-HH:MM:SS:: e ERRORE: Origine dati 'ORGANIZATIONUNIQUENAME': Si è verificato un errore. Dettagli: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Impossibile creare una connessione all'origine dati 'ORGANIZATIONUNIQUENAME'. >--- Microsoft.ReportingServices.DataExtensions.ReportServerDataProvider.RSDPException: sono state specificate credenziali o sicurezza integrate nella stringa di connessione per l'origine dati, ma l'origine dati è configurata per l'uso di un tipo di credenziale diverso. Per usare i valori nel stringa di connessione, è necessario configurare l'account di elaborazione automatica del report per il server di report.
in Microsoft.ReportingServices.DataExtensions.ConnectionExtension.FailIntegratedSecurity()
in Microsoft.ReportingServices.DataExtensions.ConnectionExtension.AppendCredentials()
in Microsoft.ReportingServices.DataExtensions.SqlConnectionWrapperBase.get_ConnectionString()
in Microsoft.ReportingServices.DataExtensions.ConnectionExtension.Open()
in Microsoft.ReportingServices.DataExtensions.SqlConnectionWrapperBase.Open()
in Microsoft.ReportingServices.Diagnostics.DataExtensionConnectionBase.OpenConnection(IProcessingDataSource dataSourceObj, DataSourceInfo dataSourceInfo, IDbConnection conn)
--- fine della traccia dello stack di eccezioni interna ---
in Microsoft.ReportingServices.Diagnostics.DataExtensionConnectionBase.OpenConnection(IProcessingDataSource dataSourceObj, DataSourceInfo dataSourceInfo, IDbConnection conn)
in Microsoft.ReportingServices.Diagnostics.DataExtensionConnectionBase.HandleImpersonation(IProcessingDataSource dataSource, DataSourceInfo dataSourceInfo, String datasetName, IDbConnection connection, Action afterImpersonationAction)
in Microsoft.ReportingServices.Diagnostics.DataExtensionConnectionBase.OpenDataSourceExtensionConnection(IProcessingDataSource dataSourceObj, String connectString, DataSourceInfo dataSourceInfo, String datasetName)
in Microsoft.ReportingServices.OnDemandProcessing.RuntimeDataSource.OpenConnection(DataSource dataSourceObj, DataSet dataSetObj, OnDemandProcessingContext pc, metriche DataProcessingMetrics)
in Microsoft.ReportingServices.OnDemandProcessing.RuntimeDataSource.OpenInitialConnectionAndTransaction()
in Microsoft.ReportingServices.OnDemandProcessing.RuntimeDataSource.InitializeDataSource()
in Microsoft.ReportingServices.OnDemandProcessing.RuntimeAtomicDataSource.Process(Boolean fromOdp)

Nota

Esaminare il log di traccia del servizio del server di report per il percorso dei file di log di SSRS.

Causa

L'account che esegue il servizio SSRS è un account virtuale o locale, ad esempio LocalSystem. Questi account virtuali o locali non dispongono delle autorizzazioni necessarie per eseguire query su FilteredViews. Le autorizzazioni SQL necessarie per eseguire query su FilteredViews sono un ruolo personalizzato denominato CRMReaderRole. Questo ruolo viene assegnato al gruppo di Active Directory denominato PrivReportingGroup. Durante l'installazione delle estensioni di report, l'account del servizio SSRS viene aggiunto a PrivReportingAccount. Non è possibile aggiungere account virtuali o locali a un gruppo di Active Directory.

Risoluzione

Per correggere il problema, attenersi alla procedura seguente:

  1. Eseguire il servizio SSRS nel contesto del servizio di rete. Per una maggiore sicurezza, eseguire il servizio SSRS come account del servizio gestito, un utente con privilegi limitati in Active Directory. Per modificare l'account del servizio, vedere Configurare un account del servizio (Configuration Manager SSRS).
  2. Assegnare manualmente il ruolo CRMReaderRole all'account che esegue il servizio SSRS in ognuno dei database CRM. Vedere sp_addrolemember (Transact-SQL).

Nota

Se si sceglie l'opzione 2, ogni volta che viene creata una nuova organizzazione, sarà necessario aggiungere l'account del servizio SSRS al nuovo database.