SSAS でメタデータ マネージャーのエラーが発生して処理や削除が行えなくなった場合の対処法

※ここに書いている手順は正式な回避方法ではないので自己責任でお願いします。

 

【環境】

  • SQL Server 2008 R2 SP1
  • Windows 7 64bit

 

【エラーの内容】

SSAS プロジェクトで処理や配置、また、Analysis Services サービスでデータベースを削除しようとしたときなど、Analysis Services サービスにかかわるほとんどの操作を行おうとしたときに以下のようなエラーメッセージが表示されて処理が中断される。

====================================================
メタデータ マネージャーでエラーが発生しました。
ID 'XXXXXX'、名前 'XXXXXX' のディメンションが
'XXXXXX' キューブによって参照されていますが、このディメンションは存在しません。
メタデータ マネージャーでエラーが発生しました。
XXXXXX cube を ファイル '\?C:Program FilesMicrosoft SQL Server
MSAS10_50.MSSQLSERVEROLAPDataXXXXXX.0.dbXXXXXXX.999.cub.xml'
から読み込み中に、エラーが発生しました。
(Microsoft.AnalysisServices)
=====================================================
※ XXXXXX は環境により異なる

【発生する原因】

不明。SSAS プロジェクトでエラーとなる不正なデータを配置すると発生する?

【回避手順】

  1. SQL Server Management Studio から Analysis Services に接続し、ツリートップにある Microsoft 分析サーバーの右クリックメニューから「停止」を選択して  Analysis Services を停止させる。
  2. エクスプローラーより「C:Program FilesMicrosoft SQL Server
    MSAS10_50.MSSQLSERVEROLAPData」フォルダを開き、エラーの発生するデータベースの以下のフォルダ・ファイルをリネームするか削除する
    ・XXXXXX.0.db フォルダ (0 は任意の数字)
    ・XXXXXX.99.db.xml ファイル (99 は任意の数字)
  3. SQL Server Management Studio から Analysis Services のツリーノードを右クリックし、「開始」をクリックする。
  4. 削除されている SSAS データベースをVisual Studio から再配置する(エラーは訂正しておくこと)。
]]>

ファイル名を指定して実行するダイアログを開くショートカット

Windows Vista や Windows 7 ではスタートメニューを開いた時点でプログラム名を入力して実行できる検索欄にカーソルが当たるのであまり使われませんが、Windows XP の場合「ファイル名を指定して実行」ダイアログを使う機会は多いと思います。

マウスでクリックして開くのが面倒であればキーボードの「Windowsキー」+「R」で開いてそのままプログラム名を入力することができます。

]]>

クライアントに表示される特定のディメンションの属性を非表示にする方法 [SQL Server Analysis Services]

キューブとディメンションを作成しクライアントに公開する際、不要なディメンションの属性が公開されてしまう場合があります。特にキーとなる属性は公開しなくてもいい場合がありますが、ディメンションのキーとなるため削除するとディメンションとして成り立たなくなってしまいます。

クライアントに公開したくない場合は以下の設定で非公開にできます。(見えないだけなのでディメンション上では存在することになります)

【手順】

  1. 作成したディメンションを開く
  2. 「ディメンション構造」のタブを選択し、属性の項目から非表示にした属性を選択
  3. 属性を右クリックしメニューから「プロパティ」を選択
  4. プロパティから「詳細設定」グループの「AttributeHierarchyVisible」を「False」に設定
]]>

Type クラス同士の比較結果 [.NET Framework]

サンプルコード

namespace TypeFullName
{
    class Program
    {
        static void Main(string[] args)
        {
            Type t1 = typeof(TypeFullName.Test1.ClassSample);
            Type t2 = typeof(TypeFullName.Test1.ClassSample);
            TypeFullName.Test1.ClassSample samp1 = new Test1.ClassSample();
            TypeFullName.Test1.ClassSample samp2 = new Test1.ClassSample();
            Type t3 = samp1.GetType();
            Type t4 = samp2.GetType();
            System.Diagnostics.Trace.WriteLine("t1 == t2      : " + (t1 == t2));
            System.Diagnostics.Trace.WriteLine("t3 == t4      : " + (t3 == t4));
            System.Diagnostics.Trace.WriteLine("t3.Equals(t4) : " + t3.Equals(t4));
        }
    }
    namespace Test1
    {
        public class ClassSample
        {
            public int A;
        }
    }
}

結果

t1 == t2      : True
t3 == t4      : True
t3.Equals(t4) : True
]]>

Type.FullName の出力例 [.NET Framework]

サンプルコード

using System;
namespace TypeFullName
{
    class Program
    {
        static void Main(string[] args)
        {
            Type t = typeof(TypeFullName.Test1.ClassSample);
            System.Diagnostics.Trace.WriteLine(t.FullName);
        }
    }
    namespace Test1
    {
        public class ClassSample
        {
            public int A;
        }
    }
}

結果

TypeFullName.Test1.ClassSample

]]>

Explorer Touch mouse 買いました

前に Acer の PC を買った時についてきたおまけ無線マウスをつかっていたのですが、マウスのホイールを回したときにスクロールが戻ってしまう現象が発生するようになったので新しいマウスを買うことにしました。今回買ったのは2011/9/2に発売された Microsoft の「Explorer Touch mouse」です。

DSC00474

同じ日に発売されたマルチタッチができる TOUCH MOUSE も結構興味をそそられたのですが、どうも左、右ボタン同時クリックとかできなさそうだったのでやめました。Windows 7 の Windows タッチを自由に扱えるのであれば買ってもよかったのですが^^;

裏面の電池を入れる場所はこんな感じになっています。電池は単三電池を使用し、奥に差し込む形になっています。

DSC00475

ちょっと変わっているのが無線レシーバを格納できるスペースが用意されているところでしょうか。

DSC00476

この状態でレシーバーを押し込むとカチって音がなってロックされます。もう一度押すとレシーバーが出てきます。持ち歩くときにレシーバー忘れなさそうでいいですね。(もちろん入れ忘れはだめですがw)

DSC00477

 

触ってみた感じなのですが、まず、ホイールの部分が完全にタッチセンサーに置き換わっています。ホイールによるスクロールもタッチセンサーの部分をなぞることでスクロールするようになります。実際になぞってみると、ウインドウがスクロールすると共に、マウスがあたかもホイールを転がしているかのような振動と音を発します。中にホイールが入っているんじゃないかと思うくらいに似ている感覚ですw

また、物理スクロールとは異なり、フリックするような感覚で素早くなぞると慣性スクロールさせることができます。長いスクロールが必要なページだと結構使えそうですね。スクロール中にもう一回タッチすればスクロールを止められます。

難点はタッチセンター全般に言えることなのですが、手に汗をかいていたりするとなぞりにくいころです。Explorer Touch mouse の場合は多少ぎこちなくなぞってもスクロールしてくれるのでまあ何とかなるのですが。

どうしてもなぞれない場合はタッチセンサーのボタンでスクロールすることができます。タッチセンサーのボタンは「前」「中」「後」の3つのボタンからなっており、前と後のボタンを使えばスクロールバーの空白部分をクリックしたのと同じように表示ページ単位でスクロールできます。中のボタンは今までのマウスの中ボタンと同じ動作をします。ただ、前ボタンについてはちょっと指を伸ばさないと届かないかもしれません。

 

後、中央のタッチセンサーは横にスクロールすることもできます。スクロールの仕方は想像のとおり、横になぞります。Excel とかで横に長いシートとかでは結構便利だと思います。反応もいいみたいです。難点は手に汗をかいていると(略)

 

マウスとレシーバは木の板2枚はさんで3m程度離れていますが、問題なく動いています。(前に買った無線マウスは50cmぐらいじゃないとまともに動かなくてひどかった・・・)

マウスの重さについてですが、単三電池を使用しているせいか若干重いかもしれません。マウス自体は軽いんですけどね…。手にはフィットするので持ち方に変な感覚を強いられることはないかと思います。

 

とりあえず1時間程度触った感じの感想ですが、物理ホイールとタッチセンサーの違いから慣れは必要かと思います。ですが、使用者が思った通りの動作はしてくれているので結構いい感じに使えるのではないかと思います。マウス好きなら買ってみてもいいかもしれません。

 

]]>

作成した共有フォルダを一覧で確認する方法

たまに忘れるのでメモ。

対象OS

  • Windows Vista (Business 以上)
  • Windows 7 (Professional 以上)

手順

  1. スタートメニューから「コンピューター」を右クリックして「管理」を選択
  2. 「システム ツール」⇒「共有フォルダ」を展開して「共有」をクリック。そこで確認可能。
]]>

Excel の「Worksheets」と「Sheets」の違い

通常 Excel VBA でワークシートを使っている限りは両方に大きな違いはないのですが、Excel のシートには「ワークシート」と「グラフシート」が存在するため(Excel 97 以降)、グラフシートを追加すると両者のシートの取得数が異なります。簡単に表にまとめると

Worksheets 「ワークシート」のみを扱う
Charts 「グラフシート」のみを扱う
Sheets すべてのシートを扱う

になっています。

ですので Worksheets と Sheets の違いを意識せずに使っている方は注意しましょう。

]]>

Excel 2007, 2010 でテーブルとしての書式設定を元に戻す方法

選択しているセル範囲に対して「テーブルとしての書式設定」を使うと、特殊なテーブル形式のセルとして使用できるようになり、見た目がきれいになる、範囲選択が楽になる、フィルターがかけられる、集計がしやすくなるなどメリットがあります。

しかし、一度設定すると解除する方法がわかりにくいのでメモしておきます。

  1. 書式設定したセルを選択
  2. メニュータブから「デザイン」を選択
  3. 「ツール」グループから「範囲に変換」を選択
  4. 確認ダイアログが表示されるので「はい」を選択して解除する

書式自体はそのまま残りますが、テーブルの属性は解除されるので後は手動でセルの書式を書き換えることができます。

]]>