SQL Server Reporting Services で登録されているサブスクリプションを一括実行する SQL

概要

サブスクリプションは登録したスケジュールに従って自動的に実行されますが、任意のタイミングで一括実行したい場合もあるかと思います。ここではそれを行うための実行 SQL を載せています。

注意

この記事の内容はすべての環境で実行を保証しているわけではありません。また公式でサポートしている内容でもありませんので自己責任でお使いください。

動作確認環境

  • SQL Server 2008 Standard SP3

実行 SQL

-- SubscriptionID を入れる変数
declare @id as uniqueidentifier
-- ReportServer データベースの Subscriptions テーブルから登録されている
-- サブスクリプション ID 一覧を取得
declare NEW_cursor cursor for
select SubscriptionID
from ReportServer.dbo.Subscriptions
-- カーソルオープン
open NEW_cursor
-- FETCH スタート
fetch next from NEW_cursor
into @id
while @@FETCH_STATUS = 0
begin
  -- サブスクリプションの実行イベント追加 (非同期)
  exec ReportServer.dbo.AddEvent @EventType='TimedSubscription', @EventData=@id
  -- 次の ID へ
  fetch next from NEW_cursor
  into @id
end
-- カーソルクローズ
close NEW_cursor
deallocate NEW_cursor

補足

この SQL はあくまでもイベントを登録しているだけなので即座にサブスクリプションの内容が実行されるわけではありません(非同期)。この SQL を実行すればサブスクリプションの実行内容がすべて完了しているものと思い込んでしまうと、次の処理を実行たときに、実はまだ処理が完了していなかった、なんてことになりかねないので注意してください。

]]>

ワークグループでネイティブモードの Reporting Services がインストール済みの環境に対して SharePoint Server をインストールして統合モードにする方法

下記のリンク先の手順で統合はできました。リンク先ではドメイン環境前提で説明されていますが、ワークグループ環境でスタンドアロンインストールでも大丈夫みたいです。その場合、途中の操作手順がいくつか異なります。

]]>

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. 後はそのままウィザードをすすめる (構成に数分かかる場合があります)

 

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

]]>

ワークグループ環境の SQL Server の各機能に対しての認証の方法まとめ

ドメイン環境であれば認証はある程度 Active Directory に任せられるので楽なのですが、ワークグループ環境では各サービスごとに認証が異なっていたりなど、ハマリどころが多いです。とりあえずわかる範囲でまとめていますが(自分用)、もしかしたら間違っているところもあるかもしれませんので参考程度に見てください。

■環境

  • ローカルPC (ワークグループ or ドメイン環境)
  • サーバーPC (SQL Server インストール, ワークグループ環境)

■接続メモ

 

【SQL Server データベース】

  • Windows 認証と SQL Server 認証を選択可
  • SQL Server 認証の場合、接続文字列にユーザー名とパスワードがあればそのほかの認証は必要なし。事前に SQL Server のログインにユーザーを登録する必要はある。
  • Windows 認証の場合はローカルPCとサーバーPCに同じユーザー名、パスワードのアカウントが必要
  • データベースアクセス時に認証ダイアログが表示される場合があり、サーバーのアカウントさえ入力できれば接続できるようにも思えるが、ローカルにあるアカウントも同時にチェックしているため、やはりローカルとサーバーに同じアカウントが必要である。
  • サーバーに作成したユーザーアカウントを SQL Server のログインに登録する必要あり。また、登録したアカウントに対してデータベース、テーブルなどそれぞれアクセスできる権限を設定する必要あり。

 

【Analysis Services】

  • Windows 認証一択
  • ローカルPCとサーバーPCに同じユーザー名、パスワードのアカウントが必要
  • キューブアクセス時に認証ダイアログが表示される場合があり、サーバーのアカウントさえ入力できれば接続できるようにも思えるが、ローカルにあるアカウントも同時にチェックしているため、やはりローカルとサーバーに同じアカウントが必要である。
  • キューブに接続できるユーザーを指定したロールを作成する必要あり。

 

【レポート マネージャー】

  • Windows 認証一択
  • レポート マネージャーに接続する際に認証ダイアログが表示されるが、サーバーに登録されているユーザーを入力すれば認証可能。ローカルに同じユーザーを作る必要はない。これはレポートマネージャーが Web システムであり、実行するプログラムの実態がサーバーにあるため。
  • レポートビルダーからレポートサーバーにアクセスする場合も、サーバーに登録されているアカウントを指定すれば認証可能
  • レポート マネージャー、レポートにアクセスできるユーザーは、レポートマネージャーでフォルダ、ファイル単位に設定

 

足りない項目は後で追加するかもしれません。また何か違う内容、または追記すべき項目があればコメントください。

]]>

[Reporting Services] レポート マネージャーに管理者としてアクセスする方法

Windows Vista や Windows Server 2008 など、UAC の構成がある環境に Reporting Services をインストールした場合、Administrators の権限のあるユーザーでレポート マネージャーにアクセスしても、権限がないとエラーが表示されることがあります。原因はもちろん UAC によるものです。

管理者権限でレポート マネージャーにアクセスするひとつの方法としては、Internet Explorer を管理者権限で実行することです。Internet Explorer の実行ファイルを右クリックして「管理者として実行」を選択すればレポート マネージャーに管理者としてアクセスできます。(管理者権限のままほかにサイトに移動するのは危険なので注意してください)

しかし、毎回管理者権限で実行するのが面倒であれば以下の設定をすることにより、管理者権限で Internet Explorer を実行しなくてもレポート マネージャーに管理者としてアクセスできます。

  1. Internet Explorer を管理者権限で実行する。
  2. レポート マネージャーのサイトにアクセスする。Reporting Services インストール環境で操作する場合、localhost ではなく、サーバー名、または IP アドレスを指定してください。
  3. 「ツール」「インターネットオプション」「セキュリティ」「信頼済みサイト」を選択して、レポート マネージャーのサイトを登録してください。(localhost だとすでにイントラネットに含まれているので追加できません)
  4. レポート マネージャーのホームから「フォルダーの設定」「セキュリティ」「新しいロールの割り当て」を選択し、アクセスするユーザー名を「<domain>/<user>」の形式で入力し、「コンテンツ マネージャー」のロールを与えて追加します。
  5. レポート マネージャーから画面右上の「サイトの設定」を選択し、「セキュリティ」「新しいロールの割り当て」を選択、ユーザーに「<domain>/<user>」を入力して「システム管理者」のロールを割り当てて追加します。
  6. Internet Explorer を閉じ、今度は管理者権限で起動せずにアクセスし、管理者としてレポート マネージャーにアクセスできるか確認してください。(場合によってはページにアクセスする際認証を求められることがあります)
]]>

Reporting Service のレポートサーバーに追加したレポートのバックアップ方法

メモです。

■環境

  • SQL Server 2008 R2

■内容

レポートビルダーなどで作成したレポートをレポートサーバー(https://blog.sorceryforce.net/ReportServer/)にアップロードした場合、レポート単独をファイルとしてバックアップする方法がありません。

アップロードされたレポートは SQL Server データベースに追加された「ReportServer」データベースに保管されているので、このデータを丸ごとバックアップすれば別記憶媒体にバックアップを取ることができます。

バックアップ手順

ReportServer データベースはオンラインバックアップが可能なので、SQL Server Management Studio 等からそのままバックアップタスクでバックアップできます。もちろん SQL を実行してバックアップも可能です。

復元手順

復元するには Reporting Services のサービスを一度止める必要があります。

  1. SQL Server 構成マネージャ等を使用して Reporting Services のサービスを停止する
  2. SQL Server Management Studio などを使用してバックアップした ReportServer を復元する。(上書きで)
  3. Reporting Services のサービスを開始する
  4. レポートの状態がバックアップ時点に復元されているか確認する

 

※メモレベルなのでもしかしたら間違っているかもしれませんので、確実に復元可能か運用前に確認してください。

]]>