I am starting a series of re-posts from my personal blog site. Recently, I decided not to maintain separate personal blog site and now my personal blog site is offline. Here is the first one...
Here I am talking about an interesting issue while running Dynamics CRM Reports. When I faced this for first time it felt rare corner scenario but recently I worked with a couple of more customers who ran into same issue. This type of strange issues can take good amount of time to investigate/troubleshoot so worth sharing.
Running any CRM report fails with error stating Reporting Extensions (Data Connector) is not installed. Of course Reporting Extensions (Data Connector) is installed and in fact it’s been removed and reinstalled in attempt to fix the issue, but no difference in error. Below is how error reads/looks like:
Reports cannot be run because the Connector for Microsoft SQL Server Reporting Services, a required component for reporting is not installed on the server that is running Microsoft SQL Server Reporting Services.
Looking deeper, SSRS Event logs reports failure loading CRM extension.
Log Name: Application
Source: Report Server (MSSQLSERVER)
Date: 7/10/2015 3:11:55 PM
Event ID: 108
Task Category: Extension
Report Server (MSSQLSERVER) cannot load the MSCRM extension.
Same event log error is there for other Report Server extensions as well. MSCRMFETCH, SQLPDW, TERADATA are other exception those fail to load within SSRS.
Report Server Service log file also complains about not being able to load the file or missing files.
extensionfactory!ReportServer_0-1!9f8!07/08/2015-02:28:31:: e ERROR: Exception caught instantiating MSCRMFETCH report server extension: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.DllNotFoundException: Unable to load DLL 'SRSDataConnectorBootstrapper.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at Microsoft.Crm.Reporting.DataExtensionShim.Common.NativeMethods.CreateManagedObject(String fullAssemblyPath, String assemblyName, String typeName, Object& obj)
extensionfactory!ReportServer_0-1!9f8!07/08/2015-02:28:31:: e ERROR: Exception caught instantiating TERADATA report server extension: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'Teradata.Client.Provider, Version=220.127.116.11, Culture=neutral, PublicKeyToken=76b417ee2e04956c' or one of its dependencies. The system cannot find the file specified.
File name: 'Teradata.Client.Provider, Version=18.104.22.168, Culture=neutral, PublicKeyToken=76b417ee2e04956c'
All the files being reported in above exceptions were present on expected path and Report Server service account was given adequate permissions. ProcMon comes to mind as handy tool for investigating file access issues. After good analysis of working and non-working logs could nail it down to VC++ runtime dlls missing or being wrong versions on non-working environment. VC++ runtime is a required component for SSRS extensions to load and function properly.
Once we knew its VC++ runtime fix was relatively easy and quick. Either replace the corrupt or missing file with appropriate version from working environment or remove and reinstall Visual C++ Redistributable Package from Microsoft download page. The Visual C++ Redistributable Packages that ships in Redist folder of Dynamics CRM installation media can also be used.
The file msvcr100.dll in C:\Windows\System32 folder was missing in one of the environment, just placing this file from a working environment resolved the issue. After correcting missing/wrong file or reinstalling VC++ runtime, restarting SSRS, IIS on CRM server and clearing IE cache resolves the errors loading SSRS extensions and CRM Reports render w/o any issues.
Hope this helps! Cheers!