I recently completed a CRM 3.0 to 4.0 upgrade for a customer and ran into a couple SQL Server Reporting Services issues during the upgrade. The SSRS errors took longer to fix than anything we ran into for CRM specifically.
The first error came when attempting to point the SSRS server to the new databases stored on a separate server using the Reporting Services Configuration Manager. The databases were at an older version and the Config Manager required that they be upgraded. During the upgrade, an error was generated regarding the RSExecRole database role. The Config Manager indicated it could not find this role for the database. The fix for this was simply to create a new database by clicking the New… button in the Database Setup window. Then, once the new database is created, switch back to the original database and apply the changes. Somewhere in creating the new database and switch back to the original, the RSExecRole role got set up correctly. Finally, credentials were not being passed correctly to the SQL Server. SSRS was attempting to log in anonymously. To fix this, the Windows Service Identity was switched from Local System to Network Service.
The second error caused reports not to work when viewing through the CRM web client. Looking at the event viewer for the SSRS server, there was an error with Source: MSCRMReporting and Event ID: 19969. The description was “Error: An internal error occurred on the report server. See the error log for more details. (rsInternalError)” Next step was to attempt to run the report from the SSRS website. When running from there, another error was generated which referenced the SessionData table in the ReportServerTempDB database. The error made reference to the SnapshotDataID field not allowing nulls. The fix for this was to edit the SessionData table and set the SnapshotDataID, IsPermanentSnapshot, ReportPath, and HasInteractivity fields to all Allow Nulls.
Hopefully this might save someone a little time during the upgrade process!