Live Reports and rsReportNotReady Error

rsReportNotReady is only supposed to be thrown when a report is configured to run from an execution snapshot, and the execution snapshot has not yet been created.  It is a pretty rare occurrence and the whole error code is really meant to cover the small window between setting the report to run from an execution snapshot and actually calling the UpdateSnapshot() method().

Recently, we here on the SSRS team saw a couple of cases where people were experiencing this error when the report was configured to execute live.  Technically, there is one valid scenario that this can happen, and that is when you request one of the streams for the report (via RenderStream() or passing StreamId on the URL to the /ReportServer endpoint) before you have actually rendered the primary stream of the report.  These customers weren't doing this though, they were rendering the report via the viewer control.  After a bit of troubleshooting, we eventually narrowed the problem down to the fact that Snapshot Isolation was enabled on the ReportServer and ReportServerTempDB databases.  Snapshot Isolation changes the locking semantics of the ReadCommitted isolation level, which broke some of our synchronization mechanisms -- we basically use the database as a distributed lock coordinator since we support scale-out by adding Report Server instances which don't directly communicate with each other.  Snapshot Isolation changes the locking semantics in such a way as that we cannot do this with the current implementation.

So what was the solution for these customers?  Disable Snapshot Isolation on the SSRS databases. 

Are you still seeing the problem and you don't have Snapshot Isolation enabled on your ReportServer or ReportServerTempDB database?  If so please let me know.