PASSJ 長崎友嘉 Blog

SQL Server の BI をテーマにします

  PASSJブログ :: ホーム :: 連絡をする :: RSS  :: ATOM :: Login
  33 投稿数 :: 5 ストーリー :: 46 コメント :: 5 トラックバック

ニュース

記事のカテゴリ

過去の記事

カテゴリ

イメージギャラリ

リンク

リンク

2008年8月30日 #

SQL Server 2008 のインストールも無事終わりました。
インストーラの「完了」画面で「補足情報」が表示されますが、インストーラを終わらせると読めなくなってしまうのでコピーして貼っておきます。

----------------------------------------------------------------------------------------------------
以下の注意事項は、SQL Server の今回のリリースにのみ適用されます。

Microsoft Update
SQL Server 2008 での更新を Microsoft Update で調べる方法については、Microsoft Update Web サイト <http://go.microsoft.com/fwlink/?LinkId=108409> (http://go.microsoft.com/fwlink/?LinkId=108409) を参照してください。

Reporting Services
セットアップ時に指定した Reporting Services のインストール オプションに応じて、レポート サーバーにアクセスする前に追加の構成が必要かどうかが決まります。
既定の構成をインストールした場合は、レポート サーバーをすぐに使用できます。
プログラム ファイルだけをインストールした場合は、Reporting Services 構成ツールを実行してレポート サーバーを展開する必要があります。
SharePoint テクノロジ用 Reporting Services アドインをインストールするには、SQL Server セットアップの終了後、
SQL Server 2008 インストール メディアの Setup フォルダにある rsSharePoint.msi を実行してください。

ドキュメントとサンプル
.NET Framework SDK をインストールするには、SQL Server 2008 オンライン ブック <http://go.microsoft.com/fwlink/?LinkId=114089>の
「.NET Framework SDK のインストール」(http://go.microsoft.com/fwlink/?LinkId=114089) を参照してください。
既定では、SQL Server のセットアップ時にサンプル データベースとサンプル コードはインストールされません。
Express 以外のエディションの SQL Server 2008 のサンプル データベースとサンプル コードをインストールするには、
http://go.microsoft.com/fwlink/?LinkId=87843 を参照してください。
SQL Server Express のサンプル データベースとサンプル コードのサポートについては、
CodePlex Web サイト (http://go.microsoft.com/fwlink/?LinkId=110391) を参照してください。

SQL Server の今回のリリースにおける最新の変更内容については、最新の Readme ファイル
 <http://go.microsoft.com/fwlink/?LinkId=100093> (http://go.microsoft.com/fwlink/?LinkId=100093) を参照してください。

SQL Server 2008 セキュリティ構成の詳細については、SQL Server 2008 ドキュメントの次のトピックを参照してください。

SQL Server 2008 オンライン ブック : 「セキュリティ構成について」

SQL Server 2008 セットアップ ヘルプ : 「Minimize SQL Server 2008 Surface Area」(SQL Server 2008 の外部からのアクセスの最小化)

SQL Server 2008 オンライン ブック (MSDN) : 「セキュリティ構成について <http://go.microsoft.com/fwlink/?LinkId=106282>」(http://go.microsoft.com/fwlink/?linkid=106282)
----------------------------------------------------------------------------------------------------

それと、「概要ログファイル」の保存先をメモしておきます。

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\%YYYYMMDD%_%HHMISS%\Summary_%ComputerName%_%YYYYMMDD%_%HHMISS%.txt

posted @ 7:16 | Feedback (0)

Mosha Pasumansky さんのブログ投稿のご紹介です。(翻訳の許可を頂いています。正確さは保証できません。)

http://sqlblog.com/blogs/mosha/archive/2008/08/25/parent-child-dimension-table-naturalizer.aspx
****************************************************************************************************
"Parent-Child Dimension Table Naturalizer"

親子ディメンションは Analysis Services の重要な機能の 1 つです。
親子ディメンションは BOM(部品表)、勘定科目一覧表、組織図などのようなシナリオに関するディメンションモデリングを行う際に柔軟性を与えます。
しかし、この柔軟性はコストを伴います。親子ディメンションの使いすぎはパフォーマンスの問題を引き起こしますし、さらに、そこには計算における問題を引き起こす意味的な*ねじれ*があります。例えば親子ディメンションは、(ノーマルなディメンションがそうするように)関係属性を解析しません。
ですから、場合によっては親子階層をノーマルなマルチレベル階層に変換することが望ましいこともあります。
この変換のプロセスは些細なものではなく、いくつかのステップを含んでいます。

マイクロソフト社の  Senior Support Escalation Engineer である Jon Burchel 氏 はこの問題を深く調べて、"Analysis Services Dimension Table Naturalizer" または "PCDimNaturalizer" と呼ばれる、親子ディメンションを通常のディメンションに自動的に変換するツールを考え出しました。
彼は www.codeplex.com にそのプロジェクトを置きました。これは、すべてのソースコードを入手可能であることを意味します。
このツールは、ほとんどの(少なくとも codeplex の)オープンソースプロジェクトとは異なり、しっかりとドキュメント化されています。(私は、Support Engineer である Jon が、良く出来たドキュメントの価値を本当に理解していると考えています。)
PCDimNaturalizer はコマンドラインまたは UI から使用できます。また、.NET アプリケーション や SSIS パッケージに組み込むためのオブジェクトモデルを公開しています。

私はこのツールが、多くの Analysis Services を実践している方々にとって役に立つことを確信しています。
codeplex の PCDimNaturalizer プロジェクトはこちら: http://www.codeplex.com/PCDimNaturalize
****************************************************************************************************

 

 

というわけで、PCDimNaturalizer を使ってみました。

1. 親子ディメンションを設定
 AdventureWorksDW データベース の DimEmployee テーブルを対象にして、
 ・Employee Key を Usage : Key
 ・ParentEmployeeKey を Usage : Parent
 おまけとして
 ・Last Name を Usage : Regular
 としてディメンションを設定しました。

2. 配置 + ビルド
 Analysis Services インスタンスに配置してビルドします。

3. PCDimNaturalizer で、対象ディメンションとして指定
 PCDimNaturalizer を起動し、対象のインスタンス、データベース、ディメンションを指定します。

4. PCDimNaturalizer のオプションを指定して、実行します。
 主なオプション
 ○"Action Level for naturalization"
   Level 1 : Create SQL View
   Level 2 : Add to data source view
   Level 3 : Create naturalized dimension
   Level 4 : Add to cube(s)
   Level 5 : Process
  ※「データソースにビューを作り」→「"データソースビュー"に加え」→「ディメンションを設定し」→「キューブに加え」→「処理する」という
   ステップのうちのどこまでやるかの指定です。
 ○"Minimam levels"
  自動的に階層数を調べて、「Level 1 : Create SQL View」で作るビューでの階層数を決めるようですが、これの指定により
  実データに存在しない数の階層を作るようです。

5. 結果
 「Level 1 : Create SQL View」でのみ、動作しました。
 「Level 2 : Add to data source view」より上位の設定では正しく動作しませんでした。データソースビューの作成がエラーになってしまいました。
 作成されたビューを載せてておきます。このビューがキモですので、どんな機能なのかはこのビューだけで理解できます。
 ちなみに、"Minimam levels"に 7 を指定してみたところ、[Level 08_KeyColumn] まで含まれるビューが生成されました。
----------------------------------------------------------------------------------------------------
CREATE VIEW [dbo].[DimNaturalized_DimEmployee] AS
WITH PCStructure(Level, [ParentEmployeeKey], [CurrentMember_KeyColumn], [Level 02_KeyColumn], [Level 03_KeyColumn], [Level 04_KeyColumn], [Level 05_KeyColumn], [Level 06_KeyColumn])
AS (SELECT 3 Level, [ParentEmployeeKey], [EmployeeKey], [EmployeeKey] as [Level 02_KeyColumn],
[EmployeeKey] as [Level 03_KeyColumn],
[EmployeeKey] as [Level 04_KeyColumn],
[EmployeeKey] as [Level 05_KeyColumn],
[EmployeeKey] as [Level 06_KeyColumn]
FROM [dbo].[DimEmployee] WHERE [ParentEmployeeKey] IS NULL OR [ParentEmployeeKey] = [EmployeeKey]
UNION ALL SELECT Level + 1, e.[ParentEmployeeKey], e.[EmployeeKey], CASE Level
WHEN 2 THEN e.[EmployeeKey] ELSE [Level 02_KeyColumn]
END
AS [Level 02_KeyColumn],
CASE Level
WHEN 2 THEN e.[EmployeeKey]
WHEN 3 THEN e.[EmployeeKey] ELSE [Level 03_KeyColumn]
END
AS [Level 03_KeyColumn],
CASE Level
WHEN 2 THEN e.[EmployeeKey]
WHEN 3 THEN e.[EmployeeKey]
WHEN 4 THEN e.[EmployeeKey] ELSE [Level 04_KeyColumn]
END
AS [Level 04_KeyColumn],
CASE Level
WHEN 2 THEN e.[EmployeeKey]
WHEN 3 THEN e.[EmployeeKey]
WHEN 4 THEN e.[EmployeeKey]
WHEN 5 THEN e.[EmployeeKey] ELSE [Level 05_KeyColumn]
END
AS [Level 05_KeyColumn],
CASE Level
WHEN 2 THEN e.[EmployeeKey]
WHEN 3 THEN e.[EmployeeKey]
WHEN 4 THEN e.[EmployeeKey]
WHEN 5 THEN e.[EmployeeKey]
WHEN 6 THEN e.[EmployeeKey] ELSE [Level 06_KeyColumn]
END
AS [Level 06_KeyColumn] FROM [dbo].[DimEmployee] e INNER JOIN PCStructure d ON e.[ParentEmployeeKey] = d.[CurrentMember_KeyColumn] AND e.[ParentEmployeeKey] != e.[EmployeeKey])
select CurrentMemberSubselect.*,
Level2Subselect.*, Level3Subselect.*, Level4Subselect.*, Level5Subselect.*, Level6Subselect.*
from PCStructure a
 left outer join (select [EmployeeKey] [CurrentMember_KeyColumn], [EmployeeKey] [CurrentMember_EmployeeKey],
[ParentEmployeeKey] [CurrentMember_ParentEmployeeKey],
[LastName] [CurrentMember_LastName]
from [dbo].[DimEmployee]) CurrentMemberSubselect on CurrentMemberSubselect.[CurrentMember_KeyColumn] = a.[CurrentMember_KeyColumn] left outer join (select [EmployeeKey] [Level 02_KeyColumn], [LastName] [Level 02_Last Name_KeyColumn]
from [dbo].[DimEmployee]) Level2Subselect on Level2Subselect.[Level 02_KeyColumn] = a.[Level 02_KeyColumn]
left outer join (select [EmployeeKey] [Level 03_KeyColumn], [LastName] [Level 03_Last Name_KeyColumn]
from [dbo].[DimEmployee]) Level3Subselect on Level3Subselect.[Level 03_KeyColumn] = a.[Level 03_KeyColumn]
left outer join (select [EmployeeKey] [Level 04_KeyColumn], [LastName] [Level 04_Last Name_KeyColumn]
from [dbo].[DimEmployee]) Level4Subselect on Level4Subselect.[Level 04_KeyColumn] = a.[Level 04_KeyColumn]
left outer join (select [EmployeeKey] [Level 05_KeyColumn], [LastName] [Level 05_Last Name_KeyColumn]
from [dbo].[DimEmployee]) Level5Subselect on Level5Subselect.[Level 05_KeyColumn] = a.[Level 05_KeyColumn]
left outer join (select [EmployeeKey] [Level 06_KeyColumn], [LastName] [Level 06_Last Name_KeyColumn]
from [dbo].[DimEmployee]) Level6Subselect on Level6Subselect.[Level 06_KeyColumn] = a.[Level 06_KeyColumn]
----------------------------------------------------------------------------------------------------

posted @ 6:26 | Feedback (0)

2008年8月29日 #

SQL Server 2008 をインストールしていた Windows 2008 の PC を返却することになってしまったので
別の PC(Windows XP) に SQL Server 2008 (日本語版RTM、評価版) をインストールしています。

SQL Server 2008 の セットアップでの構成チェックの詳細レポート 「System Configuration Check Report」の中に
「Bids2005InstalledCheck」という項目があります。
この項目の評価が「SQL Server 2008 より前のリリースの Business Intelligence Development Studio はインストールされていません」
となっています。

しかし...SQL Server 2005 の Business Intelligence Development Studio はインストール済みなんですよね...
SQL Server 2008 をインストールしている PC には既に SQL Server 2000 の DB Engine のみ + SQL Server 2005 の全機能が入っています。
BI の開発もしますのでもちろん (2005) の BI Development Studio を入れてます。
いったい何をチェックしているのでしょうか。そもそもチェックする必要はあるのでしょうか。

ちなみに、構成チェックの詳細レポートはログとして残っています。
私の環境のインストールパスではここにありました。

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\%YYYYMMDD%_%HHMISS%\SystemConfigurationCheck_Report.htm

posted @ 22:31 | Feedback (0)

今回も引き続き「BIDS Helper」のご紹介です。
「BIDS Helper」は CodePlex で公開されている BI Development Sutudio のアドインツールです。

http://www.codeplex.com/bidshelper/

機能リストはここ↑を見てください。
私がお勧めの機能だけ、簡単にご紹介します。今回は SSIS 側の機能です。

・Create Fixed Width Columns
 形式が"固定幅"のフラットファイル接続マネージャの、列の定義を Excel スプレッドシート(の一部分)のコピー&ペーストで行えます。便利です。

・Non-Default Properties Report
 SSAS と同じです。デフォルト指定以外のプロパティをリストアップしてレポートしてくれます。
 設定のチェックにどうぞ。

・Sort Project Files(Sort By Name)
 SSIS パッケージを名前順にソートしてくれます。
 既定では、SSIS パッケージは作成順に並んでしまいます。
 これが気に入らない場合は、プロジェクトファイル(*.dtproj)のこの部分↓の順番を入れ替えれば整理できます。

  <DTSPackages>
    <DtsPackage>
      <Name>Package1.dtsx</Name>
      <FullPath>Package1.dtsx</FullPath>
      <References />
    </DtsPackage>
    <DtsPackage>
      <Name>Package2.dtsx</Name>
      <FullPath>Package2.dtsx</FullPath>
      <References />
    </DtsPackage>
  </DTSPackages>

 これがちょっと面倒な作業でしたがこの「Sort Project Files(Sort By Name)」があれば 1 クリックで終了です。便利です。

・SSIS Performance Visualization(Execute and Visualize Performance)
 SSIS パッケージを実行して、パフォーマンスをビジュアル化してくれます。
 ※多くの情報が取得できます。詳細は上記 URL からご確認いただけます。

こんな感じです。
特に「SSIS Performance Visualization」は強力です。

※Pipeline Component Performance Breakdown
 SSIS パッケージを実行して、「データ変換タスク」の内部のコンポーネント単位で時間を計って表示してくれるようなのですが...
 日本語環境だからなのか、正しく動作してくれません。

 

posted @ 18:47 | Feedback (0)

最近はじっくり SQL Server 2005 / 2008 の BI 機能を触れることができています。
長らく投稿していませんでしたが、なるべく積極的に投稿していこうと考えています。

今回は「BIDS Helper」のご紹介です。
「BIDS Helper」は CodePlex で公開されている BI Development Sutudio のアドインツールです。

http://www.codeplex.com/bidshelper/

機能リストはここ↑を見てください。
私がお勧めの機能だけ、簡単にご紹介します。今回は SSAS 側の機能です。

・Aggregation Manager
 集計デザインの変更ツールです。
 画面の右側に、ディメンション属性が(属性リレーションシップの定義に従い)ツリー形式で表示される点が分かりやすいです。
 
・Dimension Health Check
 ディメンションの設定をチェックしてレポートしてくれます。
 チェックの内容は
  (1) 属性リレーションシップの妥当性(反しているデータの存在確認)
  (2) 属性キーの一意性
  (3) 反転している属性リレーションシップの指摘
 です。
 特に (1) は有難いです。

・Measure Group Health Check
 メジャーグループの設定をチェックしてレポートしてくれます。
 いまのところ、チェックしているのは「データ型の妥当性」だけです。
 例えばウィザードでキューブを作成して、メジャーのデータ型は(データソースでの定義に従い) Integer に設定しているとします。
 集計関数が SUM ですと、合計値が Integer の許容範囲を超えることがあり、(1 ビット目が 1 になったのか)合計値がマイナス値で表示されることがあります。
 このツールは実際の値をチェックして Bigint への変更を勧めてくれます。

・Non-Default Properties Report
 (そのままですが)デフォルト指定以外のプロパティをリストアップしてレポートしてくれます。
 設定のチェックにどうぞ。

・Printer Friendly Dimension Usage
 メジャーグループとディメンションの関連付けをまとめてレポートしてくれます。
 設定書がわりに。

・Visualize Attribute Lattice
 属性リレーションシップの設定を"視覚的に"表現してくれます。
 属性リレーションシップの設定確認にどうぞ。

結構便利な機能がありますので、SQL Server BI の Developer の方は是非使ってみてください。
※先週くらいに 2008 対応版もリリースされました。
※CodePlex ですので、ソースコードも参照可能です。
※SSIS のお勧め機能は次回にご紹介します。

posted @ 9:28 | Feedback (0)

2008年2月23日 #

Office 2003 SP3 の自動更新(日本語版)が2008年2月27日から、と近づいていますが、その前に既知の障害があるのでご連絡です。
MSDNフォーラム、PASSJメーリングリスト、答えてねっとなどで話題になっています。

Office 2003 SP3 の Excel ピボットテーブル から SQL Server Analysis Services へ接続して
ある特定の操作をした際に
「データベースドライバは必要な機能をサポートしていないためExcelで使用できません」
「CommandオブジェクトのCommandTextが設定されていません。」
などのエラーメッセージを表示して、正常な動作を行わない場合があります。

現状、判明している情報はこちらをご確認ください。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2770167&SiteID=7&mode=1

http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=6&disp_mode=3

http://www.kotaete-net.net/Default.aspx?pgid=14&qid=16068806489

・KB 947648 のパッチを待てばいいようです(実際にはまだ出ていないので信用できないかも)。
・暫く「Office 2003 SP3 の自動更新をしない」措置もご検討ください。
・発生後(Office 2003 SP3 適用をしてしまった後)の、パッチ(KB 947648 )が出るまでの暫定措置としては SP2 の Excel.exe に置き換えるという手段もあります。

#2/27以前にKB 947648が出ることを祈ってます。

 

posted @ 3:47 | Feedback (1)

2008年2月3日 #

Hugo Kornelis さんのブログにて、
SQL Server 2005 SP2 の現状をまとめ、SQL Server 2005 SP3 のリリースを要望しています。

■Hugo Kornelis さんのブログ "Want a Service Pack? Ask for it!"
http://sqlblog.com/blogs/hugo_kornelis/archive/2008/02/01/want-a-service-pack-ask-for-it.aspx

賛同してもらえる方は Microsoft Connect の suggestion に投票してください、とのことです。

■Microsoft Connect "Release Service Pack 3 for SQL Server 2005"
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=326575

私も★★★★★(とても重要)で投票しました。

※投票方法が分かりにくいと思います。
「レート」の★マークをクリックすることで、投票できます。
★~★★★★★までの5段階ですので、クリックする位置をお間違えなく。

 

posted @ 9:55 | Feedback (0)

2007年8月23日 #

Tech Ed で触発されたので、blog 再開します。
一昨年、昨年は Microsoft BI 製品になかなか携われなかったのですが、最近は関わることも多くなってきました。
考えたことをメモしていきたいと思います。


今回ご紹介するのは「SSAS 2005 のメモリ関連オプション」に関してです。
SQL Server DB Engine でもメモリ関連オプションの設定は必須ですが、SSASでも当然気にする必要があります。

DB Engine のデフォルト設定では、最大サーバメモリ(max server memory)が非常に大きい数字になっているため
少なくともこのオプションだけは調整しておかないと、サーバ全体のパフォーマンスが落ちる可能性があることはご存知の通りと思います。

SSASのデフォルト設定はLowMemoryLimit が75、TotalMemoryLimit が80となっており、こちらも調整が必要です。
この数値は「SSAS専用サーバであれば」ちょうど良い設定と思われますが、
実際にはライセンス上の理由により DB Engine と同居しているケースが多いと思われますので、
DB Engine と(または他に主要なサービスがあればそれらと)競合しないように、メモリ設定の調整が必要になります。

大きめキューブの処理がとても遅い場合、この設定が問題である可能性がありますね。

参考:Books On Line http://msdn2.microsoft.com/ja-jp/library/ms174514.aspx

 

 

posted @ 21:42 | Feedback (0)

2006年6月7日 #

IT Pro から

■米Microsoft,業務PMアプリ「Office PerformancePoint Server 2007」でBI製品を拡充
http://itpro.nikkeibp.co.jp/article/USNEWS/20060607/240177/


プロクラリティの行く末はいかに...
Microsoft Dynamics ERP との絡みも楽しみです。

Microsoft Dynamics と言えば、
Microsoftアーキテクチャ ベースの中規模EPR(というか業務パッケージ)製品は競合しますね。
(小規模は日本での販売は避けたようですね。)

かつて開発にかかわった業務パッケージ製品がどうなるか、心配ではあります。

posted @ 12:37 | Feedback (1)

2006年4月5日 #

IT Pro から

■米マイクロソフト、データ分析/可視化ソフトベンダーを買収、成果は次期Officeにも
http://itpro.nikkeibp.co.jp/article/NEWS/20060404/234518/


プロクラリティ社が買収されてしまいました。
Microsoft も UI の強化に本腰入れてますね。
Office に統合となると、ライセンスはどうなるのかなあ...

日本の代理店さんはどうなるのでしょうか。
http://www.understanding.co.jp/

posted @ 13:42 | Feedback (1)

2005年8月5日 #

長崎です。

Tech Ed に参加中です。
松本(み)さんのデットロックとスナップショット分離レベルのセッション中に考えたことをまとめました。
この内容は、1年前くらいに松本(た)さんと話していた内容です...(フィードバックしてない...)
非常に重要な問題なのではないか、と私は考えています。

-------------------------------------------------------------------------------------------------------
■サンプルテーブル、データ
--[col_A]がクラスタ化インデックスな主キーとなっている[tab_A]
CREATE TABLE [dbo].[tab_A](
   [col_A] [nchar](1) COLLATE Japanese_CI_AS NOT NULL,
   [col_B] [nchar](1) COLLATE Japanese_CI_AS NULL
   CONSTRAINT [PK_tab_A] PRIMARY KEY CLUSTERED
(
   [col_A] ASC
) ON [PRIMARY]
) ON [PRIMARY]

--サンプルデータを2行
INSERT INTO [dbo].[tab_A] ([col_A], [col_B]) VALUES ('1', '1') --セッションAで共有/更新/排他ロック
INSERT INTO [dbo].[tab_A] ([col_A], [col_B]) VALUES ('2', '2') --セッションBで共有/更新/排他ロック

-------------------------------------------------------------------------------------------------------
■前提知識(1)
SQL Server 2000 では、「排他ロック」がかかっている列を含んだクラスタ化インデックスを「クラスタ化インデックスのスキャン」すると
ロック開放待ちが発生する。

--セッションA:排他ロックのまま10秒WAIT
BEGIN TRAN

UPDATE [dbo].[tab_A]
   SET [col_B] = [col_B]
WHERE [col_B] = '1'

WAITFOR DELAY '00:00:10'

COMMIT TRAN

--セッションB:デフォルトの分離レベルで、共有ロックのクラスタ化インデックスのスキャン
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

SELECT * FROM [dbo].[tab_A]
WHERE [col_B] = '2'

※「テーブルのスキャン」でも発生する。
※「クラスタ化インデックスのシーク」では発生しない。

-------------------------------------------------------------------------------------------------------
■前提知識(2)
SQL Server 2005 でも、上の状況は変わらない。
しかし、新しい"スナップショット"分離レベルを使用すると、ロック開放待ちを回避することができる。

--下準備
ALTER DATABASE <データベース名> SET ALLOW_SNAPSHOT_ISOLATION ON

--セッションA:排他ロックのまま10秒WAIT
上記と同じ。

--セッションB:"スナップショット"分離レベルで、共有ロックのクラスタ化インデックスのスキャン
SET TRANSACTION ISOLATION LEVEL SNAPSHOT

SELECT * FROM [dbo].[tab_A]
WHERE [col_B] = '2'

※ロック開放待ちを回避しているはず。

-------------------------------------------------------------------------------------------------------
■問題点
"スナップショット"分離レベルでロック開放待ちを回避できるのは以下の組み合わせだけである。
・セッションAが「排他ロック」で、セッションBが「共有ロックのテーブル/クラスタ化インデックスのスキャン」

以下の組み合わせではロック開放待ちを回避できていない。
・セッションAが「更新ロック」で、セッションBが「更新ロックのテーブル/クラスタ化インデックスのスキャン」
・セッションAが「更新ロック」で、セッションBが「排他ロックのテーブル/クラスタ化インデックスのスキャン」
・セッションAが「排他ロック」で、セッションBが「更新ロックのテーブル/クラスタ化インデックスのスキャン」
・セッションAが「排他ロック」で、セッションBが「排他ロックのテーブル/クラスタ化インデックスのスキャン」

ちなみに、以下はもともと問題ない。
・セッションAが「共有ロック」で、セッションBが「共有ロックのテーブル/クラスタ化インデックスのスキャン」
・セッションAが「共有ロック」で、セッションBが「更新ロックのテーブル/クラスタ化インデックスのスキャン」
・セッションAが「共有ロック」で、セッションBが「排他ロックのテーブル/クラスタ化インデックスのスキャン」
・セッションAが「更新ロック」で、セッションBが「共有ロックのテーブル/クラスタ化インデックスのスキャン」

(例)更新ロック×更新ロック
--セッションA:更新ロックのまま10秒WAIT
BEGIN TRAN

SELECT [col_B]
   FROM [test].[dbo].[tab_B] WITH(UPDLOCK)
WHERE [col_B] = '1'

WAITFOR DELAY '00:00:10'

COMMIT TRAN

--セッションB:"スナップショット"分離レベルで、更新ロックのクラスタ化インデックスのスキャン
SET TRANSACTION ISOLATION LEVEL SNAPSHOT

SELECT [col_A]
               ,[col_B]
   FROM [test].[dbo].[tab_B] WITH(UPDLOCK)
WHERE [col_B] = '2'

-------------------------------------------------------------------------------------------------------
■理由
"スナップショット"側ではロックを管理しない。ロックは"本物"側で一元管理しなければならないからである。

よって、
"スナップショット"分離レベルのセッションが共有ロックの場合は期待通りに動作する("本物"側のロック状況を無視する)が、
"スナップショット"分離レベルのセッションが更新ロックや排他ロックの場合、"本物"側をロックする必要があるらしい。

結局、"スナップショット"としての実装では上記の問題は解決しない。

-------------------------------------------------------------------------------------------------------
■提言(または妄想)
スキャンの際に、いきなり更新ロックや排他ロックをかけようとしないで、まずスキャン内部でデータの状況を参照してから
スキップするかウェイトするか決めればいいのでは?

ちなみに最新バージョンのDB2では、ロック開放待ちの回避策として
「スキャンにおいて、未コミットのINSERT行をスキップする」
「スキャンにおいて、未コミットのDELETE行をスキップする」
「スキャンにおいて、未コミットのINSERT行/UPDATE行/DELETE行がロック対象になる可能性を吟味して、スキップするかウェイトするか決める」
というようなオプションがあるそうです。(DB2 & RedBrick Day 2005 にて)

こんなオプションが考えられますね。
「更新ロックでのスキャンにおいて、排他ロック状態のINSERT行をスキップする」Yes or No
「更新ロックでのスキャンにおいて、排他ロック状態のDELETE行はロック取得前の状態で判断し、該当しなければスキップする」Yes or No
「更新ロックでのスキャンにおいて、更新ロック状態のUPDATE行はロック取得前の状態で判断し、該当しなければスキップする」Yes or No
「更新ロックでのスキャンにおいて、排他ロック状態のUPDATE行はロック取得前の状態で判断し、該当しなければスキップする」Yes or No
「排他ロックでのスキャンにおいて、排他ロック状態のINSERT行をスキップする」Yes or No
「排他ロックでのスキャンにおいて、排他ロック状態のDELETE行はロック取得前の状態で判断し、該当しなければスキップする」Yes or No
「排他ロックでのスキャンにおいて、更新ロック状態のUPDATE行はロック取得前の状態で判断し、該当しなければスキップする」Yes or No
「排他ロックでのスキャンにおいて、排他ロック状態のUPDATE行はロック取得前の状態で判断し、該当しなければスキップする」Yes or No
-------------------------------------------------------------------------------------------------------
■実装時の注意点
で、現実的には...以下の点を注意しましょう。
・"スナップショット"分離レベルのセッションは共有ロックに限定するように実装しましょう。
  INSERT/UPDATE/DELETE処理を行わないようにしましょう。更新ロックも避ましょう。
・更新ロックでのテーブル/クラスタ化インデックスのスキャンが発生しないように設計しましょう。
  →更新ロックかけてあとで更新するような長いトランザクションの対象テーブルは、非クラスタなインデックスを作りましょう。(って物理依存...)
・排他ロックでのテーブル/クラスタ化インデックスのスキャンが発生しないように設計しましょう。
  →同一テーブルの多くの行を更新するクエリがある場合は、非クラスタなインデックスを作りましょう。
  →同一テーブルの多くの行を更新するクエリは分割しましょう。

っていう感じですかね。
-------------------------------------------------------------------------------------------------------
以上です。

posted @ 15:56 | Feedback (18)

2005年6月29日 #

BSA の書籍の宣伝です。

「Microsoft Office Business Scorecards Accelerator  ビジネススコアカードで経営情報を分析しよう!」

を会社のチームで書きました。
エクスメディアの実践ライブラリ シリーズなので、
画像たっぷり(というか、ばっかりというか)で分かり易いことは保証します。
40ページも費やした付録で使用するサーバコンポーネントのインストールを全て解説(笑)。
ツールの具体的な使用方法もステップバイステップで細かく書いています。

http://www.cbook24.com/bm_detail.asp?sku=4872835123

え、その前に BSA って何かって...
BSA = Microsoft Office Business Scorecards Accelerator は、
SQL Server Analysis Services をデータソースとして使用する、Microsoft が無償ダウンロード提供している KPI モニタリングツールです。
最近(でもないか...)はやりのBIツール、BPMとかCPMとか呼ばれている「KPIをモニタリングするツール」 を検討してみてはいかがでしょうか。

宣伝でした。

posted @ 23:37 | Feedback (4)

2005年6月16日 #

SQL Server 2005 June CTP いじって気が付いた点(というか小ネタ)をメモしていきます。

SQL Server Management Studio (以下、略してSSMS) の「データベースエンジン」接続において、
テーブルを選択して右クリック>「テーブルを開く」で、ツール上でデータを変更できます。(2000 Enterprise Manager と同じ)
ここで、全て大文字で「NULL」と入力すると、NULL値になるという、ちょっとうれしい機能があります。

しかし...'NULL'という文字列を入力する手段が見つからない...
NULL値 と 'NULL'という文字列 の頻度を考慮した機能変更なんだろうなぁ。
けど、Analysis Services で、
カスタムメンバ用のMDX式を入力する場合に'NULL'という文字列を入れるときがよくあるんですよね。
うーむ。

posted @ 2:11 | Feedback (1)

2005年6月15日 #

「Business Intelligence Portal Sample Application for Microsoft Office 2003」の日本語版が6/14に公開されました。
http://www.microsoft.com/japan/sql/bi/downloads/BIP/BIP2003.mspx


実際には、「日本語版」という表現は適切ではありません。
もともと複数言語対応可能なアプリケーションで、2005年1月くらいに公開されています。
http://blogs.sqlpassj.org/nagasaki/archive/2005/02/02/7453.aspx
今回、日本語訳の辞書登録用のデータと、SharePoint に登録するちょっとしたツール、
それと日本語のドキュメントが付いて、
microsoft.com/japan 下のページに日本語で公開されました。

名前が長いので BIP 2003  と呼ぶことにします。

BIP 2003 の特徴は、こんな感じでしょうか。(粒度がバラバラですがご勘弁を)
・Windows SharePoint Server 上で動作(Windows Server 2003が必要)
・様々なデータを ピボットテーブル、グラフ、表、ゲージなどの形式で、組み合わせて見栄え良く表示
・データソースは Analysis Services 、RDB、テキストファイルなど選択肢多い
・OWC、Reporting Services など、IE上での表示機能を持つ既存ツールを利用 
        (Reporting Services は URL指定するだけですが...)
・IE 上で動作するコンポーネントが主体で、あまり WSS が動作しているサーバにポストバックしない
   ( データソースに「localhost」を指定するとクライアントPC上のデータソースを使用、構成の保存は WSS で行っている)
・セルのカラーリングなど OWC 単体だけでは無い機能は、そのコンポーネントが実施

かなり多機能です。
BSA と多少被り気味ですが、また一つ、Microsoft の BI フロントツールの選択肢が増えました。
PASSJ の BI 分科会で、「SSABI」「BSA」「Excel Add-in」などと共に、「BIP 2003」をフォローしていきたいですね。
不明点あればメーリングリストに。

posted @ 12:02 | Feedback (0)

2005年6月2日 #

最新CTP ではサービス名の最初に「SQL Server 」が付いて、認識しやすくなりました。
April CTP では、「Integration Services」や「Analysis Services」でした。
※"YUKONCTP"はインスタンス名です。Integration Services はマルチインスタンスにならないので。

でも、↓フルテキストエンジンサービスが変わってない...

サービスの名前が統一されていない→ソートしたときに1箇所に集まらないのは気になっていたので、変更されてよかった!

posted @ 6:07 | Feedback (1)

2005年5月30日 #

オープンソースの世界は素人ですが...

Time-Trend.COM 社さんのページから
http://www.time-trend.com/index.files/Page499.htm

オープンソースのBI系ツールが紹介されています。(日本語化しているらしい)
レポーティングツール:OpenReports
OLAPエンジン:Mondrian
OLAPクライアント:JPivot

この中で、JPivot。
「Microsoft MDX に準拠しており、キューブへのクエリ記述作業が効率的におこなえます。」
引用元:http://www.time-trend.com/index.files/Page663.htm
自由度高そう。「効率よく」とは思えませんが。

→よし、軽く評価しよ。

これだけだと怒られそうなので
OpenOLAP というオープンソースのOLAPツールのURLを書いておきます。
http://sourceforge.jp/projects/openolap/

posted @ 18:13 | Feedback (1)

2005年5月18日 #

書籍「BIシステム構築実践入門」がもうすぐ発売です。
DBマガジンでの連載をまとめて再構成したもので、BI を基礎から理解するのに最適です。

BIシステム構築実践入門
著: 平井明夫
監修: 株式会社アイエイエフコンサルティング
SEShop → http://www.seshop.com/detail.asp?pid=6016

実は宣伝です。すいません。著者は上司だし。

posted @ 16:24 | Feedback (0)

Microsoft SQL Server 2000 レポート サービス データ収集 と診断ツール(SRSDiag)
というものがあるらしい・・・と、そのFAQだそうです。

http://support.microsoft.com/kb/897127/

posted @ 11:41 | Feedback (0)

2005年5月17日 #

BSA のデモサイトがある・・・
公開日は3月31日より前らしい・・・
気付くの遅すぎ>私

http://msbi.jp/bsa/default.mspx



(追記)
Windows SharePoint Services のお試しサイト、と言えなくもないですね。
さすがにオブジェクトの変更権限は無いようですが。
(参照用の id/password は上のURLの右上に書いてあります。)
http://msbi.jp:8001/default.aspx

posted @ 13:35 | Feedback (1)

2005年5月11日 #

ニュースサイトから。

(2005/05/11)
■米Microsoft,ビジネス・インテリジェンス・ソフト「Maestro」の非公開ベータ版を発表
http://itpro.nikkeibp.co.jp/free/ITPro/USNEWS/20050511/160624/


なるほど・・・
Microsoft Office Business Scorecards Accelerator
http://www.microsoft.com/japan/sql/bi/downloads/biaccelerator/bizscorecards.mspx
は前置きだったのか・・・

posted @ 14:01 | Feedback (0)

2005年5月5日 #

ちょっと古い(4/14)話で申し訳ないんですが、気になったので。

■エンド ユーザーのレポート作成と分析のための Microsoft Reports プラットフォーム
http://www.microsoft.com/japan/technet/itsolutions/msit/busint/msreportsTCS.mspx

「IT ショウケース」ということで、Microsoft社自身の事例紹介のようです。

「現状」にはこう書いてあります。
「(社)」は(日本語の)原文にはついていません。私がつけました。
--------------------
Microsoft (社) のレポート作成プラットフォームは、社内のビジネス要件に対応できる状態ではありませんでした。効率的なワークフローをサポートするためのプロセス、ツール、および組織的なインフラストラクチャが欠如していたのです。Microsoft (社)の多数のレポート作成グループから生成されるレポートは、それぞれが独自のアプリケーションや互換性のないデータ構造を持っていたため、それらを統合することは難しい状況でした。
--------------------

うーん、厳しい自己評価。
それで・・・

「解決策」にはこう書いてあります。
同じく、「(社)」は私がつけました。
--------------------
Microsoft (社)では、統合されたツール セットである MS Reports を開発し、共通の操作性を提供する完全なレポート作成プラットフォームを形成しました。MS Reports は Excel 2003 をリッチ クライアントとして拡張し、Web サービスを使用して各種のレポート作成データベースに動的に接続します
--------------------

で、マイクロソフト社のアーキテクチャを使ったシステム開発で成果を得たのは良く分かったんですが
この考え方はいつ製品に反映されるんだろう。

posted @ 16:32 | Feedback (0)

そういえば 2000 の Reporting Serivces SP2 に含まれている 「Reprting Services Web Parts」も試しました。
こちらも画像なしですが(時間に追われているのでスイマセン)

ベータのときに書かれている...

■Jan Tielens さんの ブログ
SQL Server Reporting Services Web Parts Review
http://weblogs.asp.net/jan/archive/2005/01/21/358073.aspx

から、特に変わりありません。

Web パーツは「レポートエクスプローラ」と「レポートビューア」の2つ。
Shartpoint への、パーツのセットアップはコマンドラインで。
(sp2Readme_JA.htm に記載されています。)

「レポートエクスプローラ」はプロパティで指定したレポートマネージャ(サイト)の、
特定のフォルダ内のレポートをリストアップする機能。
「レポートビューア」は、パーツ内でレポートを実行する機能。
(ひとことで言うと、iframe要素)

「レポートエクスプローラ」を、「レポートビューア」に関連付けしない場合、
rdl ファイルへのリンクをクリックすると別ウィンドウでレポートを実行。
関連付けした場合は「レポートビューア」で実行。

まあ、こんなとこでしょうか。

posted @ 15:27 | Feedback (1)

SQL Server 2005 April CTP で、Report Builder を試してみました。
画像は取ってませんがメモだけ。

■最初にレポートビルダを開く
レポートマネージャ(デフォルトは http://(サーバ名)/Reports/)に接続すると、
「ファイルのアップロード」ボタンの並びに「レポートビルダ」ボタンがあります。
これをクリックすると、Webブラウザ(以下、IE)上でレポートビルダが開きます。
このとき、使用可能な「データソース」がリストアップされるはずですが、
まだ用意していないのでリストアップされません。

■レポートビルダの「データソース」となるメタモデルを作成し、配置する
BI Development Studio に、「レポートモデルプロジェクト」が追加されています。
このプロジェクトで、Analysis Services と同様にデータソース、データソースビューを作成し、
データソースビューに依存するメタモデルである「レポートモデル」を作成します。

レポートモデルは、テーブルの列と計算列を属性として持たせることができるようです。
例えば数値列ならSUM、MAXなど。日付列なら年、月など。

この「レポートモデル」が、レポートビルダにおける「データソース」になります。
(同じ言葉(データソース)が複数の意味で使用されているので注意)
レポートモデルをBI Development Studio で「配置」することで、レポートマネージャ上に「レポートモデル」が配置されます。
(フォルダ「モデル」が自動的に作成されます。予約フォルダになるのかな?)
ついでにフォルダ「データソース」が作成され、レポートモデルが使用しているデータソースが配置されました。
なお、「ファイルのアップロード」ボタンでレポートモデルをレポートマネージャ上に配置するのは上手くいきませんでした。
(先に、「データソース」フォルダと、使用しているデータソースをアップロードしておく手順かな?)

■改めてレポートビルダを開く
改めてレポートビルダを開くと、「データソース」(すなわちレポートモデル)が選択できるようになっています。
1つ選んで、レポートビルダ上で(すなわちIE上で)レポートを定義します。
最後に「作成」ボタン(だったかな?)を押すと、配置するフォルダ、ファイル名を指定して、レポートマネージャ上に配置できます。
実行はいままでどおりです。

■Report Builder って
一般ユーザが、IE上で、事前に用意されたレポート用メタモデルを使用して、rdlファイルを作成して、レポートマネージャ上に配置する
機能みたいですね。

posted @ 15:11 | Feedback (14)

2005年4月18日 #

Reprting Service にて簡単なグラフ付きレポートを作成中...
「予約」というオプションが気になったのでチェックを付けてみる。

「予約」オプションの選択前

「予約」オプションの選択後

どうやら、上下が逆転するらしい...(これはY軸で指定したから。X軸だと左右が逆)

そうか!
reverse(リバース:逆) と reserve(リザーブ:予約)か!
ネタですよね、きっと、うん、そうに違いない...


SPちゃんとあてたっけなあ。なんか心配になってきた...

posted @ 18:15 | Feedback (5)

2005年3月22日 #

久しぶりに、SSABI を細かく検証したいんですが、
Analytics Builder Workbookにて

うーん。私の PC は Excel 2003 SP1 なんですが。
Excel XP って 2002 のことですよね。
2002 入れろってことですか?うーむ。

posted @ 17:13 | Feedback (11)