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