参考リンク
]]>Reporting Services をインストール後、サーバー名を変更したときの対処法
Reporting Services をインストールした時にいくつかの設定はインストール時のサーバー名を使用しているため、後でサーバー名を変更するとReporting Services が正常に動作しなくなります。
ここではサーバー名を変更した後に Reporting Services の設定を変更すべき個所を説明します。
【環境】
- SQL Server 2008 R2
■参照データベースのサーバー名
Reporting Services インストール時は参照データベースのサーバー名がインストール時のサーバー名になっているのでそれを変更後サーバー名、または localhost に変更します。
- スタートメニューから「Microsoft SQL Server 2008 R2」⇒「構成ツール」⇒「Reporting Services 構成マネージャー」を選択
- 左のメニューから「データベース」を選択
- 右のビューから「データベースの変更」をクリック
- 「既存のレポート サーバー データベースを選択する」にチェック
- 「サーバー名」を新しいサーバー名にするか「localhost」に変更。正常に接続できるかテストする。
- レポート サーバー データベースの選択で「ReportServer」を選択
- 後はそのままウィザードをすすめる (構成に数分かかる場合があります)
他にはユーザーがデータソースなどでサーバー名を直接指定している場合はそれらをすべて変更する必要があります。
]]>[SSAS] 名称などのディメンションの並び順を別の属性(列)の値をもとに並び替えるようにする
ディメンションを作成した直後は自分自身の属性の表示名称をもとに並び替えられるようになっているため、名前に関連する属性は文字コード順で並び替えられてしまいます。また、数値であっても文字列として並び替えられるので「1,10,11,12,2,3…」のようになってしまいます。
並び替えの変更で一番簡単なのはKeyColumnを変更し、Orderby をKeyにすることです。手順は以下のようになります。
少し手順が多いので箇条書きで書きます。
■キーによる並び替え設定手順
- 並び順を変更するディメンション(.dim)を開く
- 設定変更対象の属性を選択、プロパティを開く
- KeyColumns プロパティからキー列を開き、他の列の値で並び替えしたい列を右のリストに移動させる。複数の列選択可、上の項目ほど優先度が高い
- NameColumn を開き、表示名称を選択する
- OrderBy を「Key」に変更
以上の方法で別の列の値をもとに並び替えられるので確認してみてください。
上記の方法は簡単なのですが欠点が一つあり、キー項目を変えてしまっているため、キーを使用している箇所に影響が出る場合があります。たとえば、Reporting Services のレポートではフィルターをキーで管理しているため、レポートのフィルターで特定の値をフィルターで設定した後に、KeyColumns で設定した値が変更されてしまうと、レポートにフィルター設定が無効になってしまう場合があります。特に設定したキーが自動付番であったりすると確実に影響します。
そこで別な並び替えの設定としては「属性キー」を使用した並び替えを行う方法があります。こちらは対象属性のキーを変更しないため上記のように見た目の値が変更されていないにも関わらず内部のキーが変わってしまうという事態を防ぐことができます。ただし、データの持ち方はシステムそれぞれですので、どちらを採用するかは開発者の判断に任せます。
属性キーを使用した並び替えの設定は以下のようになります。
■属性キーによる並び替え設定手順
- 並び順を変更するディメンション(.dim)を開く
- 「属性リレーションシップ」のタブを選択
- 並び替えを変更する属性を右クリックして「新しい属性リレーションシップ」を選択
- 属性リレーションシップの作成ダイアログで「関連属性」の名前から並び替えの基準にしたい列(属性)を選択、OKボタンをクリック
- 「ディメンション構造」タブをクリック
- 並び替え変更対象の属性を選択し、プロパティを表示
- OrderBy を「AttributeKey」に変更
- OrderByAttribute から先ほど並び替え対象に選択した属性を選択
一応属性の少ないシンプルなディメンションであれば上記の手順で並び替えは可能なのですが、階層化されていたり、多くの属性が存在する場合は手順が複雑になるかもしれません。
【参考】
]]>VBScript から ADO を使ったデータベース接続に必要な接続文字列
メモです。.NET で ADO.NET を使った時と接続文字列が違うので注意が必要ですね。
Windows 認証
Driver={SQL Server}; server=<サーバー名>; database=<データベース名>;
SQL Server 認証
Driver={SQL Server}; server=<サーバー名>; database=<データベース名>; uid=<ユーザー名>; pwd=<パスワード>;
Windows 認証と SQL Server 認証の違いはユーザー名とパスワードの指定があるかないかの違いだけで他は同じです。
]]>SSIS で Shift_JIS で表現できない文字(文字コード)を含む CSV ファイルの読み書き
かなりピンポイントなメモです。
【読み込み】
Shift_JISで扱えない文字を Shift_JIS で保存するわけにはいかないので、通常は Unicode の形式で保存します。SSIS のフラット ファイル ソースでは Unicode ファイルの読み込みに対応しており、フラット ファイル接続マネージャーで「Unicode」にチェックを入れることによって読む込むことができます。Unicode といってもいくつか形式はありますが、「UTF-8」「UTF-16LE」での読込は確認しています。
【書き出し】
フラット ファイル変換先で Shift_JISに対応していない文字を Shift_JIS で書き出そうとすると必ずエラーになります。事前に Shift_JIS に対応していない文字を変換するか、Unicode などで保存する必要があります。
]]>別コンピューターから SSIS パッケージを実行する方法
メモです。SQL Server エージェントを登録する方法のプログラムで実行できました。
開発サーバーにしか SQL Server が入ってなく、SSIS パッケージもそこでしか実行できないので SQL Server エージェントに実行を任せています。
手順を簡単に書くと、
- SSIS プロジェクトでパッケージを作成
- SQL Server Management Studio から SQL Server データベース に接続し、SQL Server エージェント を起動 (今後常に使う場合は OS 起動時に常に起動させる設定にしておくといいです。)
- ジョブを作成し、ステップに SSIS パッケージ実行を追加。今回 SSIS パッケージはサーバー内のローカルフォルダにおいてあるので ファイル システムから SSIS パッケージを選択しました。
- ジョブを登録したら上記リンク先にあるプログラムでバッチ プログラムを作成。接続文字列やパッケージ名は環境に合わせて変えてください。(「jobConnection = new SqlConnection("Data Source~」の部分と「jobParameter.Value = "RunSSISPackage";」の部分)
- 後は実行して動作するか確認
[VBScript][VBA] セルの入力項目にエラーがあるかどうかをチェックする
メモです。
通常セルに入力されている値を取得する場合は
<なんちゃら>.Cells(row, col).Value
で取得できますが、セルの入力項目にエラーがある場合、上記のプログラムでアクセスするとエラーになってしまいます。
セルの内容がエラーであるかどうかは以下のようにして事前にチェックすることができます。
Set objExcel = CreateObject("Excel.Application")
Set objSheet = <なんちゃら>
If objExcel.WorksheetFunction.IsError(objSheet.Cells(row, col)) Then
' エラーがあった場合の処理
Else
' エラーがなかった場合の処理
End If
]]>