Question

Koba33 on Thu, 12 Nov 2015 12:19:45


お世話になっております。

SQL Server 2012 Enterprise でSSRSを構築しています。
レポートの配信でデータドリブンサブスクリプションを設定しておりますが、
17件ほどの送信先のアドレスリストの内、最初の4-5件までが送信エラーとなっております。

以下、一例となりますが、
Reportは18:00:00に実行して18:00:57に下記エラーがEventLogに記録されておりDBと接続できないようです。

ログの名前:         Application
ソース:           Report Server Windows Service ([インスタンス])
日付:            2015/11/12 18:00:57
イベント ID:       107
タスクのカテゴリ:      管理
レベル:           エラー
キーワード:         クラシック
ユーザー:          N/A
コンピューター:       HogeServer.[インスタンス]ad.local
説明:
Report Server Windows Service ([インスタンス]) はレポート サーバー データベースに接続できません。
イベント XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Report Server Windows Service ([インスタンス])" />
    <EventID Qualifiers="0">107</EventID>
    <Level>2</Level>
    <Task>5</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2015-11-12T09:00:57.000000000Z" />
    <EventRecordID>87577</EventRecordID>
    <Channel>Application</Channel>
    <Computer>HogeServer.[インスタンス]ad.local</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Report Server Windows Service ([インスタンス])</Data>
  </EventData>
</Event>

4-5件名以降は配信出来ているので接続関係のタイムアウトの設定を疑っておりますが、
SSRSの何処を探れば良いか彷徨っています。

データソースは共有データソースをSSRS内で登録しています。

ざっとタイムアウトに関係しそうな値をチェックしました。
・レポート内の個々のDataSetのタイムアウト設定は0(無視)
・DatabaseQueryTimeout: 120(sec)  (rsreportserver.config)
・RecycleTime: 720(min) (rsreportserver.config)
・レポートの処理オプション: レポートをタイムアウトしない
・データドリブンサブスクリプションの作成: このコマンドのタイムアウトを指定します 30秒(Default) → 3000秒に変更
・Http Timeout(web.config) : httpRuntime executionTimeout="9000"

サブスクリプションの実行から57秒でエラーとなっているため、
タイムアウトには抵触していないように感じています。
(もっと長いので)

当該時刻のSSRSのLogを確認すると下記メッセージとなっています。

データベースへの接続を開始できません。すべての要求および処理でデータベースに接続する必要があります。	

--->	System.InvalidOperationException:	

タイムアウトに達しました。プールから接続を取得する前にタイムアウト期間が過ぎました。
プールされた接続がすべて使用中で、プール	サイズの制限値に達した可能性があります

タイムアウトでないとすれば、プール数が問題なのか?とも思いましたが、
SSRS上でプール数をどのように設定するのか理解できていません。


長文で申し訳りませんが、上記状況の改善につきまして
ご助言頂ければと思います。

よろしくお願いします。

※追記1: データドリブンサブスクリプションは今回初めて構成しました。同様のレポートで通常のサブスクリプションを組んでいますが上記エラーは発生していません。

※追記2: サーバー環境(Domain環境)
・DB Server: SQL Server 2012 SP2 on Windows Srever 2008R2(Enterprise) Cluster
・Report Server: SQL Server 2012 SP2 on Windows Srever 2008R2(Enterprise)
                        Remote接続(Port:1433) / Nativeモード



Sponsored



Replies

Koba33 on Sun, 15 Nov 2015 07:33:43


自己レスです。

USのサイトも色々調べていますが、解決には至らず。
後で英語でも質問してみようかと思います。
(こちらにはUSのリンクを貼るつもりです)

サーバー構成の概念図を作りました。

SSRSの共有データソースはCluster Server 側がすべて持っている構成です。

※IPはダミーです。

Koba33 on Mon, 16 Nov 2015 15:59:40


自己レス2です。

USの方でも質問させてもらいました。
マルチになっているのでリンク貼らせて頂きます。
SSRS Data Driven Subscription not work partially

(タイトルが変わってしまいました…)

色々と実験しておりますが、Data-Drivenサブスクリプションで設定する
データソースの実行権限とDBのLoginの関係が悪いのか?と疑っておりますが、
特に進展していません…


Koba33 on Thu, 19 Nov 2015 17:45:07


自己レス3です。

US TechNetの Qiuyun Yu さんから有用な回答を頂きました。

本件のData-Driven Suscriptionが部分的に失敗する現象は rsreportserver.config の 
MaxQueueThreads値の変更でほぼ解決できる見通しです。

本現象とMaxQueueThreads値の関係性を正確に理解できてはいませんが、
状況は改善されているため運用しながら観察するつもりです。

詳細はUSのスレッドを参照ください。
SSRS Data Driven Subscription not work partially

参考まで。