[SSRS] レポートマネージャーでレポートがサブスクリプションによって自動エクスポートされたときのログを確認する

メモ書きです。

環境

  • SQL Server : SQL Server 2008 R2

内容

ログを確認すると、エクスポートされたレポートの種類や、エクスポートにかかった時間、結果、出力サイズ、行数などが参照できます。

ログを確認するには SQL Server Reporting Services をインストールした時に作成されるデータベース「ReportServer」のテーブルを参照します。

以下の SQL を実行するとログの内容を確認できます。

use [ReportServer];

select
  B.[Path]                -- レポートのパスと名前
 ,A.[LogEntryId]
 ,A.[InstanceName]        -- レポートサーバーインスタンス名
 ,A.[ReportID]
 ,A.[UserName]            -- 実行ユーザー
 ,A.[ExecutionId]
 ,A.[RequestType]
 ,A.[Format]
 ,A.[Parameters]          -- レポートの出力に指定したパラメーター
 ,A.[ReportAction]
 ,A.[TimeStart]           -- 出力を開始した時間
 ,A.[TimeEnd]             -- 出力が完了した時間
 ,A.[TimeDataRetrieval]   -- データの取得にかかった時間 (単位はミリ秒)
 ,A.[TimeProcessing]      -- レポートの処理にかかった時間 (単位はミリ秒)
 ,A.[TimeRendering]       -- レポートの表示にかかった時間 (単位はミリ秒)
 ,A.[Source]
 ,A.[Status]              -- rsSuccess(成功) またはエラー コード
 ,A.[ByteCount]           -- レポートのファイルサイズ
 ,A.[RowCount]            -- クエリ結果の行数
from [ExecutionLogStorage] A
inner join [Catalog] B
  on B.[ItemID] = A.[ReportID]
where convert(varchar(8), A.[TimeStart], 112) = '20151104'  -- いつのデータを取得したいか、などの条件
order by A.[LogEntryId] desc;

各パラメータの詳しい情報などは以下の URL 先を参照してください。SharePoint について書かれていますが、内部では Reporting Service を使っているので大体同じです。


[T-SQL] データベースのテーブル、ストアド、関数の一覧を取得する SQL

-- テーブル一覧取得
select name
from sysobjects 
where xtype = 'U'
order by name

-- スカラー値関数一覧取得
select name
from sysobjects 
where xtype = 'FN'
order by name

-- ストアド一覧取得
select name
from sysobjects 
where xtype = 'P'
order by name

Reporting Services をインストール後、サーバー名を変更したときの対処法

Reporting Services をインストールした時にいくつかの設定はインストール時のサーバー名を使用しているため、後でサーバー名を変更するとReporting Services が正常に動作しなくなります。

ここではサーバー名を変更した後に Reporting Services の設定を変更すべき個所を説明します。

【環境】

  • SQL Server 2008 R2

■参照データベースのサーバー名

Reporting Services インストール時は参照データベースのサーバー名がインストール時のサーバー名になっているのでそれを変更後サーバー名、または localhost に変更します。

  1. スタートメニューから「Microsoft SQL Server 2008 R2」⇒「構成ツール」⇒「Reporting Services 構成マネージャー」を選択
  2. 左のメニューから「データベース」を選択
  3. 右のビューから「データベースの変更」をクリック
  4. 「既存のレポート サーバー データベースを選択する」にチェック
  5. 「サーバー名」を新しいサーバー名にするか「localhost」に変更。正常に接続できるかテストする。
  6. レポート サーバー データベースの選択で「ReportServer」を選択
  7. 後はそのままウィザードをすすめる (構成に数分かかる場合があります)

 

他にはユーザーがデータソースなどでサーバー名を直接指定している場合はそれらをすべて変更する必要があります。


VBScript から ADO を使ったデータベース接続に必要な接続文字列

メモです。.NET で ADO.NET を使った時と接続文字列が違うので注意が必要ですね。

 

Windows 認証

Driver={SQL Server}; server=<サーバー名>; database=<データベース名>;

 

SQL Server 認証

Driver={SQL Server}; server=<サーバー名>; database=<データベース名>; uid=<ユーザー名>; pwd=<パスワード>;

 

Windows 認証と SQL Server 認証の違いはユーザー名とパスワードの指定があるかないかの違いだけで他は同じです。


SQL Server データベースの自動バックアップ

今まで SQL Server のデータベースのバックアップは SSIS や Windows タスクを使用したバックアップ SQL でやってたのですが、SQL Server Management Studio を使えば簡単にバックアップスケジュールを組めたんですね。

せっかくなのでその手順を簡単に書いておきます。

【環境】

  • SQL Server 2008 R2
  • Windows Server 2008 R2

【手順】

  1. SQL Server Management Studio を起動
  2. 対象データベースエンジンを開き、「管理」フォルダを展開
  3. 「メンテナンス プラン」を右クリックし、「新しい メンテナンス プラン」を選択
  4. 新しいメンテナンス プランで任意の名前を指定
  5. デザイン画面が表示されるので、ツールボックスから「データベースのバックアップ タスク」をデザイナー画面にドラッグ&ドロップ
  6. 配置したデータベースのバックアップ タスクをダブルクリック
  7. ダイアログが開くので、バックアップするデータベースの選択、バックアップファイルの出力先、追加、上書きなどを指定して OK をクリック。
  8. ビューの上にあるサブプランからカレンダーアイコンをクリック。
  9. ジョブ スケジュールのプロパティが開くので、バックアップを行うタイミングを任意に設定して OK をクリック

後は指定した時間に自動的にデータベースがバックアップされます。

ちなみにこのメンテナンスは内部では SQL Server エージェントのジョブを作成しており単にそれを実行しているので、ジョブを見てみると作成したバックアップ タスクが追加されていることがわかります。