У меня была такая же проблема, за исключением того, что я использую Sybase. Некоторое время назад я публиковал код, который написал, чтобы избавиться от соединения (и это не сработало), когда увидел ошибку! Я исправил ошибку и, скрестив пальцы, теперь, похоже, работает. Я открыл почти 100 отчетов, где я не мог открыть 10 раньше. Если вы попробуете это, пожалуйста, дайте мне знать, если это работает для вас.
Вот что я делаю прямо перед тем, как закрыть окно, содержащее средство просмотра Crystal Reports:
var rd = (ReportDocument)crystalReportViewer1.ReportSource;
foreach (Table table in rd.Database.Tables)
table.Dispose();
rd.Database.Dispose();
rd.Close();
rd.Dispose();
GC.Collect();
Mark