SSRS で非常に奇妙な異常が発生しました。2019 を使用して新しい SSRS インスタンスが作成されましたが、以前の 2016 インスタンスと同じ ReportServer DB を使用しているようです。これは、何千ものレポートと関連アイテムの移植を避けるために行われた可能性があります。
2016 インスタンスはまだ実行されているようですが、ReportingService データベースへのアクセスに使用されるアカウントは有効ではなくなったため、2016 URL を使用してレポートにアクセスしようとすると、「レポート サーバー データベースにアクセスできません」というエラーで終了します。
2019 年にレポートにアクセスすると、レポート マネージャーでレンダリングできます。
2019 インスタンスの URL を使用して、ReportService2010.Render() への wcf サービス呼び出しを通じて同じレポートを呼び出すと、2016 インスタンス経由でサービスにアクセスした場合と同じエラーが発生します。
また、レンダリング試行に関するログ情報と「レポート サーバー データベースに接続できません」というエラーが 2016 のエラー ログにのみ表示されるため、2016 バージョンが 2019 への呼び出しをレンダリングしようとしていることがわかります。
IIS ログを再確認したところ、WCF サービスが 2019 サーバーを呼び出して、結果 200 でレンダリングを要求していることがわかりました (これはファイア アンド フォーゲットなので、エンドポイントにアクセスできる場合は常に 200 が返されます)。
実際には、wcf は 2019 インスタンスを呼び出してレポートを要求しているようですが、その要求のログ記録は SSRS の 2016 インスタンスで実行されています。
これはレポート サーバー データベースで適切に構成されていないことが原因でしょうか?
答え1
これはユーザー エラーです。WCF サービスの app.config は正しいインスタンスを指していたため、ログ メッセージも正しく出力されていました。すべての WCF サービスを参照する API プロジェクトの web.config には、同じキーを持つ 2 つのアプリ設定がありました。1 つのキーが正しくなく、ReportExecution エンドポイント バインディングに使用されていました。
構成は完璧だと想定していました。