(これは初回実行のみの問題ではないことに注意してください。これは毎回発生します)
誰かが次のことに遭遇したかどうか知りたいです。
SSRSインスタンスからレポートを生成するac#アプリケーションを作成しました。
SSRSインスタンスが存在するサーバーでこのアプリケーションを実行すると、レポートは±6秒で生成されます。
リモートボックスからまったく同じアプリケーションを実行すると(同じネットワーク、SSRSインスタンスとは異なるPC)、同じレポートに±18秒かかります。
使用されるコードは次のようなものです
ServerReport report = new ServerReport();
report.ReportServerUrl = new System.Uri(reportSetup.ConnectionString);
report.ReportServerCredentials.NetworkCredentials = System.Net.CredentialCache.DefaultCredentials;
report.ReportPath = reportName;
report.SetParameters(reportParams);
byte[] bytes = report.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);
where
ServerReport
is from Microsoft.Reporting.WinForms
from C:\Program Files (x86)\Microsoft Visual Studio 10.0\ReportViewer\Microsoft.ReportViewer.WinForms.dll
(ただし、Webバージョンも試しました)そして残りは次のように宣言されます
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
List<ReportParameter> reportParams
reportSetup.ConnectionStringの形式はhttp://<server name>/ReportServer
次のとおりです(ここではサーバー名が実際の名前ですが、IPでも試しました)。
上記の各ステップの時間を計ったところ、anfは、犯人がパラメータを設定するライン上にいることを発見しました。そこで、実際のレポートのデフォルトでパラメーター値を保存し、そのステップを削除しました。その後、レンダリングに以前よりも時間がかかりました。
さらに、Reporting Service Configuration Managerサービスアカウントをネットワークからローカルアカウントに変更してみて、次の場所にある構成ファイル(rsreportserver.config)の認証設定を試してみました。C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer
当初、認証設定は
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
<RSWindowsNTLM/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
ReportingServicesの認証タイプ<RSWindowsNegotiate/>
から読み取った行を削除しました
RSWindowsNegotiate
RSWindowsNegotiateは、Negotiateを指定する認証要求を処理するようにレポートサーバーに指示します。Negotiateは最初にKerberos認証を試みますが、Active Directoryがクライアント要求のチケットをレポートサーバーに付与できない場合は、NTLMにフォールバックします。ネゴシエートは、チケットが利用できない場合にのみNTLMにフォールバックします。最初の試行でチケットが見つからないのではなくエラーが発生した場合、レポートサーバーは2回目の試行を行いません。
しかし、これは役に立ちませんでした。
コードまたはSSRSのインストールを修正する方法について誰かがアイデアを持っていますか?アプリケーションをSSRSインスタンスのサーバーとは別のサーバーに配置したいと思います。