...

SQL Server 2014 自習書シリーズ No.4

by user

on
Category: Documents
477

views

Report

Comments

Transcript

SQL Server 2014 自習書シリーズ No.4
SQL Server 2014 自習書シリーズ No.4
SQL Server 2008 ユーザーのための SQL Server 2014
Published: 2008 年 4 月 30 日
SQL Server 2014 更新版: 2014 年 11 月 30 日
有限会社エスキューエル・クオリティ
この文章に含まれる情報は、公表の日付の時点での Microsoft Corporation の考え方を表しています。市場の変化に応える必要
があるため、Microsoft は記載されている内容を約束しているわけではありません。この文書の内容は印刷後も正しいとは保障で
きません。この文章は情報の提供のみを目的としています。
Microsoft、SQL Server、Visual Studio、Windows、Windows XP、Windows Server、Windows Vista は Microsoft Corporation
の米国およびその他の国における登録商標です。
その他、記載されている会社名および製品名は、各社の商標または登録商標です。
この文章内での引用(図版やロゴ、文章など)は、日本マイクロソフト株式会社からの許諾を受けています。
© Copyright 2014 Microsoft Corporation. All rights reserved.
目次
STEP 1.
SQL Server 2008 からの 変更点の概要.................................................................... 4
1.1
SQL Server 2008 からの変更点の概要 ........................................................................ 5
1.2
SQL Server 2008 R2 で提供された主な新機能.............................................................. 6
1.3
SQL Server 2012 で提供された主な新機能 .................................................................10
1.4
SQL Server 2014 で提供された主な新機能 .................................................................21
1.5
自習書を試す環境について ........................................................................................28
1.6
サンプル データベース(AdventureWorks2014)のダウンロード ....................................29
1.7
サンプル データベース(NorthwindJ)の作成 ..............................................................33
STEP 2.
SQL Server 2008 R2 以降の 必ず役立つ新機能 ........................................................35
2.1
AlwaysOn 可用性グループによる可用性の向上/DR の実現 ............................................36
2.2
AlwaysOn フェールオーバー クラスター インスタンス(FCI) .......................................55
2.3
Windows Server Core へのインストールがサポート .....................................................56
2.4
包含データベース(CDB:Contained Database) ........................................................58
2.5
列ストア インデックスによる飛躍的な性能向上 ............................................................63
2.6
Reporting Services の強化(地図レポート対応など) ...................................................68
2.7
PowerPivot によるインメモリ BI ..............................................................................71
STEP 3.
SQL Server 2008 R2 以降の Transact-SQL の新機能 ...............................................80
3.1
Management Studio の新機能 .................................................................................81
3.2
SQL Server 2012 からの Transact-SQL の新機能 .......................................................82
3.3
Transact-SQL 分析関数のサポート ............................................................................89
3.4
FileTable による Windows ファイルのサポート ...........................................................91
3.5
SQL Server Data Tools による開発生産性向上 .............................................................95
3.6
Microsoft Azure SQL データベース(SQL Azure)への対応 ......................................... 103
STEP 4.
SQL Server 2008 R2 以降の その他の新機能 ......................................................... 105
4.1
マルチ サーバー管理(SQL Server ユーティリティ) .................................................. 106
4.2
DAC(データ層アプリケーション) .......................................................................... 123
4.3
Distributed Replay 機能による容易なストレス テストの実施 ........................................ 136
4.4
拡張イベント(XEvents)での GUI サポート ............................................................ 141
4.5
データベース リストア(復元)時の UI 向上 ............................................................. 145
4.6
起動オプションを設定するための新しい UI ................................................................ 146
4.7
DQS(Data Quality Services)によるデータ品質の向上 ............................................... 147
4.8
マスター データ サービス(MDS)によるマスター データ管理 ...................................... 159
STEP 1. SQL Server 2008 からの
変更点の概要
この STEP では、SQL Server 2008 R2 以降(2008 R2/2012/2014)で提供され
た新機能の概要を説明します。
この STEP では、次のことを学習します。

SQL Server 2008 からの変更点の概要

SQL Server 2008 R2 からの新機能の概要

SQL Server 2012 からの新機能の概要

SQL Server 2014 からの新機能の概要

サンプル データベース(AdventureWorks、NorthwindJ)の作成
1.1
SQL Server 2008 からの変更点の概要
2008 年 8 月に発売された SQL Server 2008 が登場してから約 6 年、
その間に SQL Server は
2008 R2、2012、2014 と 3 つバージョン アップしました。したがって、SQL Server 2008 か
ら SQL Server 2014 へ移行/アップグレードを行う場合には、SQL Server 2014 から提供され
た新機能だけでなく、SQL Server 2008 R2 以降で提供された新機能も大きな移行メリットにな
ります。
SQL Server 2008 R2 以降で提供された主な新機能をまとめると、次の表のようになります。非
常に多くの機能が提供されているので、次ページ以降で詳しく説明します。
主な新機能
性能向上
SQL Server 2008 R2
(2010年 5月発売)
SQL Server 2012
(2012年 4月発売)
SQL Server 2014
(2014年 4月発売)
可用性/運用管理
BI/DWH
• Unicode 圧縮
• StreamInsight(インメモ
リのイベント処理機能)
• SQL Server ユーティリティ
によるマルチサーバー管理
• PowerPivot(インメモリの
BI 機能)
• MDS (マスター データ サー
ビス) でマスター データ管理
• Reporting Services の
地図対応(.shp ファイルや
Bing マップへの対応)
• DAC(データ層アプリケー
ション)
• Microsoft Azure SQL データ
ベースへの対応
• メモリ マネージャーの改良
(ラージ オブジェクトへの
対応)
• 列ストア インデックス
(読み取り専用)
• 15,000 パーティションの
サポート
• クラスター(WSFC)環境
での tempdb のローカル
ストレージへの配置
• AlwaysOn 可用性グループ
による可用性の向上(データ
ベース ミラーリング機能の進
化版)
• クラスター(WSFC)での
SMB やマルチ サブネット
構成のサポート
• Windows Server Core へ
の対応
• 包含データベース
• Distributed Replay(分散再
生)による負荷テストの実施
• 拡張イベントの UI 提供
• HASHBYTES 関数での暗号化
アルゴリズムの強化
• ユーザー定義サーバー ロール
• Analysis Services のインメ
モリ化(インメモリ BI の
サーバー版)
• 分析関数の提供(LEAD、
LAG、CUME_DIST、OVER
句の拡張など)
• Power View によるデータ
分析レポートの作成
• Reporting Services のデータ
警告
• MDS の Excel アドイン
• DQS(Data Quality
Services)の提供
• Integration Services での
CDC サポート
• Apache Hadoop への対応
(Hadoop Connector 提供)
• ODBC driver for Linux 提供
• SQL Server Data Tools に
よる開発生産性の向上
• T-SQL の強化(SEQUENCE、
EOMONTH、CONCAT、
THROW、IIF、FORMAT、
OFFSET..FETCH、CHOOSE
などのサポート)
• FileTable による Windows
ファイルのサポート
(FileStream の進化形)
• フルテキスト検索の強化(プ
ロパティ検索への対応など)
• Management Studio に
Visual Studio 2010 シェルを
採用(コード スニペット、
ズーム、マルチ ウィンドウな
どへ対応)
• インメモリ OLTP
OLTP 向けのインメモリ エ
ンジン(Hekaton)
• クラスター化列ストア イン
デックス(CCSI)
インメモリの列指向データ
ベースの SQL Server 実装
• SSD バッファ プール拡張
• Delayed Durability(遅
延永続化)
• SELECT INTO のパラレル
処理
• 基数推定の進化
• 統計の増分更新
• AlwaysOn 可用性グループで、
クォーラム損失時にも
読み取り可能セカンダリへの
アクセスが可能
• AlwaysOn 可用性グループで、
セカンダリを最大 8台まで作
成可能(SQL Server 2012
では 4台が上限)
• クラスター(WSFC)で
CSV(クラスター共有ボ
リューム)をサポート
• リソース ガバナーの強化
(I/O 制限など)
• パーティション スイッチやイ
ンデックス再構築時のロック
の優先度変更
• Power View レポートでの
Analysis Services 多次元モ
デルへの対応
Excel のアドオン
• Power Query for Excel
• Power Map for Excel
その他
• Microsoft Azure 上へのバッ
クアップとバックアップ ファ
イルの暗号化
• AlwaysOn 可用性グループの
セカンダリを Microsoft
Azure 上へ作成することがで
きるウィザードの提供(クラ
ウド DR の実現)
• Microsoft Azure 上の仮想マ
シン(VM)へのデータベー
スの複製
• データベース ファイル
(.mdf)を Microsoft Azure
上に配置可能
• Microsoft Azure 上へのバッ
クアップを支援するツールの
提供
1.2
SQL Server 2008 R2 で提供された主な新機能
SQL Server 2008 R2 から提供された主な新機能は、次のとおりです(前ページの表から、SQL
Server 2008 R2 の部分を抜き出したものです)
。。
主な新機能
性能向上
• Unicode 圧縮
• StreamInsight(インメモリのイベント処理機能)
可用性
運用管理
• SQL Server ユーティリティによるマルチサーバー管理
BI/DWH
• PowerPivot(インメモリの BI 機能)
• MDS (マスター データ サービス) でマスター データ管理
• Reporting Services の地図対応(.shp ファイルや Bing マップへの
対応)
その他
• DAC(データ層アプリケーション)
• Microsoft Azure SQL データベースへの対応
SQL Server 2008 R2 は、SQL Server 2008 からのマイナー バージョンアップという位置付け
なので、SQL Server 2012 や 2014 と比べると新機能の数は少ないのですが、イチ早くインメ
モリに対応した PowerPivot や StreamInsight 機能の提供、Unicode 圧縮、Reporting
Services の地図対応(Bing マップへの対応)など、役立つ機能が多く提供されています。
主な新機能の概要
SQL Server 2008 R2 から提供された主な新機能の概要は、次のとおりです。

Unicode 圧縮
Unicode 圧縮機能では、Unicode データ (nchar や nvarchar データ型のデータ) を
圧縮することができます。従来は、英数字データ(ABC、0~9)でも 2 バイトを消費し
ていたものを圧縮することで、ディスク Write/Read を減らすことができるので、性
能向上を実現することができます。また、ディスク コストの削減にも役立ちます(ただ
し、圧縮によって、その分 CPU パワーを利用することになるので、それとのトレード オ
フになります)
。

StreamInsight によるストリーム データの処理(CEP:複合イベント処理)
SQL Server 2008 R2 からは、「StreamInsight」機能が提供されて、CEP (Complex
Event Processing:複合イベント処理) を実現することができるようになりました。CEP
は、各種のセンサー データや株取引情報、Web サーバーのログ(クリック ストリーム)
などのように、絶え間なく大量に流れてくるようなストリーム データを処理することが
できるアプリケーションのことを指します。StreamInsight を利用すれば、こういった
大量のデータをすばやく処理することができます。

SQL Server ユーティリティによるマルチ サーバー管理
SQL Server 2008 R2 からは、「SQL Server ユーティリティ」機能が提供されて、複
数のサーバーの状態を容易に監視/管理することができるようになりました。
CPU 利用率やディスク使用状況などが
健全かどうかを集中管理できる
ユーティリティ
エクスプローラー

PowerPivot によるセルフ サービス データ分析
SQL Server 2008 R2 からは、PowerPivot(パワー ピボット)機能が提供されて、次
のような見栄えの良いデータ分析レポートを簡単に作成できるようになりました。

マスター データ サービス(MDS)によるマスター データ管理
SQL Server 2008 R2 からは、
「マスター データ サービス」
(MDS)機能が提供されて、
マスター データ管理(複数システムに散在するマスター データの一元管理や、マスター
データの品質管理など)を実現することができるようになりました(以下の画面は、SQL
Server 2012 から提供された Excel 用 MDS アドインを利用して、マスター データの
管理を行っているときの様子です)
。

Reporting Services の進化
SQL Server 2008 R2 からは、Reporting Services(標準搭載されるレポート サーバ
ー機能)が強化されて、次のようなレポートを簡単に作成できるようになりました(デー
タバーやインジケーター、スパークライン、地図、Bing マップ連携機能など)。
データラインとインジケータ、スパークラインを配置したレポート

データ層アプリケーション(DAC)によるデータベース構造の複製
SQL Server 2008 R2 からは、
「データ層アプリケーション」
(DAC)機能が提供されて、
メタ データの移動が簡単に行えるようになりました。開発機から本番機へ、あるいはそ
の逆へ同じ構造のデータベースを作成したい場合に便利で、マイクロソフトの提供するク
ラウド上の RDB サービスである「Microsoft Azure SQL データベース」
(旧名:SQL
Azure)上に、同じ構造のデータベースを配置する場合にも役立ちます。

Microsoft Azure SQL データベース(クラウド)への対応の強化
SQL Server 2008 R2 からは、「Microsoft Azure SQL データベース」への対応が強
化されて、次のように Management Studio から接続することができるようになりまし
た。
これらの SQL Server 2008 R2 からの新機能については、Step 2 以降でステップ バイ
ステップ形式で試せるように構成しているので、ぜひ試してみてください。
1.3
SQL Server 2012 で提供された主な新機能
SQL Server 2012 は、メジャー バージョンアップなので、非常に多くの新機能が提供されてい
ます。その主なものは、次のとおりです。
主な新機能
性能向上
• メモリ マネージャーの改良 (ラージ オブジェクトへの対応)
• 列ストア インデックス (読み取り専用)
• 15,000 パーティションのサポート
• クラスター(WSFC)環境での tempdb のローカル ストレージへの配置
可用性
運用管理
• AlwaysOn 可用性グループによる可用性の向上
(データベース ミラーリング機能の進化版)
• クラスター(WSFC)での SMB やマルチ サブネット構成のサポート
• Windows Server Core への対応
• 包含データベース
• Distributed Replay(分散再生)による負荷テストの実施
• 拡張イベントの UI 提供
• HASHBYTES 関数での暗号化アルゴリズムの強化
• ユーザー定義サーバー ロール
BI/DWH
• Analysis Services のインメモリ化(インメモリ BI のサーバー版)
• 分析関数の提供(LEAD、LAG、CUME_DIST、OVER 句の拡張など)
• Power View によるデータ分析レポートの作成
• Reporting Services のデータ警告
• MDS の Excel アドイン
• DQS(Data Quality Services)の提供
• Integration Services での CDC サポート
• Apache Hadoop への対応(Hadoop Connector 提供)
• ODBC driver for Linux 提供
その他
• SQL Server Data Tools による開発生産性の向上
• T-SQL の強化(SEQUENCE、EOMONTH、CONCAT、THROW、IIF、
FORMAT、OFFSET..FETCH、CHOOSE などのサポート)
• FileTable による Windows ファイルのサポート(FileStream の進化形)
• フルテキスト検索の強化(プロパティ検索への対応など)
• Management Studio にVisual Studio 2010 シェルを採用(コード スニ
ペット、ズーム、マルチ ウィンドウなどへ対応)
この中でも特に役立つのが「列ストア インデックス」と「AlwaysOn 可用性グループ」機能です。
列ストア インデックスは、大きな性能向上を実現することができ、AlwaysOn 可用性グループは、
従来のデータベース ミラーリング機能を進化させたようなものです。
また、Windows Server Core への対応や、包含データベース、Analysis Services のインメ
モリ対応、Power View による見栄えの良いレポート作成機能など、実際に役立つ機能が本当に
たくさん提供されています。
これらの SQL Server 2012 からの新機能の特徴を簡単にまとめると、次のようになります。
性能向上に関する主な新機能
SQL Server 2012 から提供された性能向上に関する主な新機能の概要は、次のとおりです。

メモリ マネージャーの変更
ラージ オブジェクトの処理を効率化、列ストア インデックスへの対応など

列ストア インデックスによる性能向上
列ストア インデックスは、大量のデータに対する集計処理時に大きな性能向上を期待で
きる機能で、特に、夜間バッチ処理時(夜間バッチでの日次集計や月次集計処理など)や、
DWH(データ ウェアハウス)環境での集計処理時に大変役立つ機能です。弊社のお客
様データ(1 億 2 千万件の DWH)を利用して、列ストア インデックスの性能効果を検
証したところ、以下のような結果が得られました。
102倍
46.9倍
59.7倍
25倍
テストに利用したハードウェア環境
・Xeon 2.66GHz Quad*2(計8コア)
・メモリ 32GB
・RAID 10 ストレージ(2GB キャッシュ)
列ストア インデックスを採用することで、25~102 倍もの性能向上を確認することが
できました(詳しくは Step 2 で説明します)。

15,000 パーティションのサポート。データ パーティション機能で作成できるパーティ
ション数の上限が 15,000 に

クラスター(WSFC)環境での tempdb のローカル ストレージへの配置のサポート
AlwaysOn 可用性グループによる可用性の向上/DR の実現
SQL Server 2012 から提供された新機能のうち、一番の目玉機能/役立つ機能が「AlwaysOn 可
用性グループ」です。
AlwaysOn は、
「いつでも利用できる」ことを目指したテクノロジーで、いわゆる「高可用性」
(High
Availability)および「ビジネス継続性」
(Business Continuity)を実現するための機能のブラン
ド名です。SQL Server 2012 よりも前のバージョンでは、WSFC(Windows Server フェール
オーバー クラスタリング)や DBM(データベース ミラーリング)、ログ配布、レプリケーショ
ン機能などが提供されていました。そして、これらのテクノロジーを利用して、稼働率 99.999%
(ファイブ ナイン=年間ダウンタイム約 5.3 分以内)を達成/実現している企業もすでに存在し
ています。
弊社のお客様でも、可用性を向上させるために、
「WSFC と DBM の組み合わせ」や「WSFC とロ
グ配布の組み合わせ」で年間ダウンタイム 0(1 年間無障害・無停止)を実現しているお客様がい
らっしゃいます。また、求める可用性レベルが低くても良いという場合には「WSFC のみ」や「DBM
のみ」で運用されているお客様もいらっしゃいます。ここ数年は、万が一の災害に備えるべく、
DR(Disaster Recovery:災害復旧)へのニーズも非常に高まっていて、従来のバージョンでは、
「DBM 非同期モード」や「ログ配布」機能を利用することで DR を実現していました。
しかし、これらの機能は、すべて別々のテクノロジーとして提供されていたので、組み合わせて利
用するためには設定が面倒であったり、組み合わせならではの設定のコツが必要だったりもしまし
た。また、柔軟な設定が行えない部分や、DR 構成時の復旧手順が複雑(これに伴うダウンタイム
の増加)などの課題もありました。コスト面でも、WSFC では共有ストレージ(エントリ クラス
でも数百万円~)が必須であったこと、DBM での自動フェールオーバー構成時には監視サーバー
を別途用意する必要があるなど、余計なコストがかかっていました。そこで、これらの課題を解決
するべく登場したのが、SQL Server 2012 から提供された「AlwaysOn 可用性グループ」です。
AlwaysOn 可用性グループ(Availability Group)は、従来の WSFC(Windows Server フェー
ルオーバー クラスタリング)とデータベース ミラーリング機能の良いところどりをしたような機
能で、容易な設定で可用性を向上させることができます。以下の画面は、可用性グループの設定ウ
ィザードを利用して、8 台のセカンダリ(複製データを保持するサーバー)を設定しているときの
様子です。
自動フェールオーバーに
設定したセカンダリ
同期モードに
設定した
セカンダリ
9台のノードで
可用性グループを構成
している例
(8台のセカンダリ)
セカンダリへのアクセス
を許可する設定
非同期モード
に設定したセカンダリ
自動フェールオーバー(自動的に切り替わるサーバー)の指定や、DR(災害復旧)用途の非同期
モードの設定などを簡単に行うことができます。
AlwaysOn 可用性グループでは、内部的にデータベース ミラーリングと同じようなテクノロジー
を利用して、データベースの複製(レプリカ)を作成しています(最大 8 つの複製=セカンダリ
を作成することが可能です)
。
AlwaysOn 可用性グループ(Availability Group)
セカンダリ
セカンダリ
複製
複製
プライマリ
複製
セカンダリ
複製
最大 8台のセカンダリ
(データベースの複製を保持
するサーバー)を作成可能
* SQL Server 2012 では最大 4台まで
SQL Server 2014 からは最大 8台までの
セカンダリを作成できるおうになりました
セカンダリ
リスナー (仮想サーバー名)
クライアントは、リスナーを介して
アクセスするので、どのサーバーが
処理しているかは意識する必要がない
クライアント
クライアント
クライアントからは、リスナーと呼ばれる仮想サーバー名を介してアクセスするので、どのサーバ
ーが処理しているかは意識する必要はありません。フェールオーバー(プライマリとセカンダリの
役割変更)があったとしても、クライアントのアプリケーションを修正する必要はなく、同じサー
バー名で透過的にアクセスすることが可能です。
フェールオーバーにかかる時間は、わずか 10~20 秒程度であり、WSFC の場合の 30 秒~数分
かかるのに比べて、ダウンタイムを大幅に短縮することもできます。
AlwaysOn 可用性グループには、次のような利点もあります。

ウィザードによる容易な設定およびダッシュボードによる容易な監視が可能
ダッシュボードで
セカンダリを監視

セカンダリを遠隔地へ配置した DR(災害復旧)構成が可能。災害からの復旧時にも、
アプリケーションを修正することなく同じサーバー名(リスナー)
でアクセス可能なため、
ダウンタイム(停止時間)を大きく短縮可能

セカンダリに対して読み取りアクセスが可能(レポーティング ツールのような読み取り
中心のアプリケーションが、プライマリへ負荷をかけることなく、読み取り操作が可能)

セカンダリからバックアップを取得可能(プライマリへ負荷をかけることなく、バックア
ップを取得することが可能)

データ転送時の圧縮と暗号化が可能(データベース複製時の転送データは自動圧縮される
ためパフォーマンス良く複製することが可能。暗号化によるセキュリティ強化も可能)

自動ページ修復機能(万一プライマリ上のデータベース ページが破損した場合には、セ
カンダリ上の正常なページを利用して、自動修復が可能)

柔軟なフェールオーバー ポリシー(フェールオーバーを発生させる障害のレベルを 5 段
階で調整可能)

共有ストレージが不要な分、コスト削減が可能(可用性グループでは、それぞれのノード
がローカル ディスク内にデータベースの複製を保持するため、共有ストレージが不要。
通常、WSFC を構成する場合は、エントリー クラスの共有ストレージで数百万円、ミド
ル クラスだと一千万前後、その分のコスト削減が可能)
。また、DBM のように監視サー
バーを別途用意する必要がないため、その分のコスト削減も可能

包含データベース(Contained Database)機能により、ログイン アカウントや照合順
序に依存しないデータベースが作成可能になり、障害時のダウンタイム(停止時間)を短
縮可能(従来のバージョンでは、障害によるフェールオーバー発生後は、ログイン アカ
ウントとデータベース ユーザーとのマッピングの修復が必要)
。
このように、AlwaysOn 可用性グループには多くの利点があり、従来のバージョンの DBM(デ
ータベース ミラーリング)機能ではサポートされなかった複数セカンダリ(最大 8 台まで構成可
能。DBM では 1 台まで)や、セカンダリに対する読み取り操作/バックアップ操作が可能なアク
ティブ セカンダリが実装されています(DBM の場合はスナップショット作成時点での過去データ
の読み取りのみがサポートされるのに対して、可用性グループではリアルタイムでの読み取り操作
が可能です)。
また、従来のバージョンだと複数のテクノロジーを組み合わせないと実現できなかった構成(ロー
カル環境での高可用性と、遠隔地サーバーによる DR 構成を実現するには「WSFC と DBM 非
同期モード」あるいは「WSFC とログ配布」などの組み合わせが必要だったもの)を、可用性グ
ループではウィザード 1 つで設定可能になりました。障害からの復旧時にも、アプリケーション
を修正する必要がないので(同じサーバー名でアクセスできるため)、ダウンタイム(停止時間)
を大きく短縮することが可能です。
AlwaysOn フェールオーバー クラスター インスタンス(FCI)の新機能
AlwaysOn フェールオーバー クラスター インスタンス(FCI)は、WSFC(Windows Server フ
ェールオーバー クラスタリング)のリソースとしてインストールした SQL Server インスタンス
(SQL Server クラスター)のことを指します。SQL Server 2012 からは、従来のバージョン
の SQL Server クラスターと比べて、次の新機能が提供されています。

SMB 接続(共有フォルダー)へのデータベース配置が可能
SQL Server 2012 からは、共有ストレージが必須ではなくなり、データベースのインス
トール先としてネットワーク上の共有フォルダーを選択可能
共有フォルダーをデータベースの
インストール先として指定可能に
tempdb データベースを
ローカル ディスクへ配置可能に

tempdb データベースをローカル ディスクへ配置可能
ボトルネックになりやすい tempdb データベースをローカル ディスクへ配置できるこ
とで、SSD などより高速な内蔵ストレージへ配置して性能向上を実現可能

複数サイト(複数サブネット)フェールオーバー クラスタリングのサポート
従来のバージョンではサブネットをまたがったクラスタリングは構成不可。SQL Server
2012 からはサブネットをまたがった構成が可能に

柔軟なフェールオーバー ポリシー
フェールオーバーを発生させる障害のレベルを 5 段階で調整可能。障害検知をより詳細
に行うことが可能
このように SQL Server 2012 からは、SQL Server クラスターが強化されて柔軟な構成をとれ
るようになりました。これらは、可用性の向上に繋がるだけでなく、性能向上にも役立つものです。
SQL Server 2014 からは、SQL Server クラスターで CSV(クラスター共有ボリューム)がサ
ポートされるなど、さらにパワーアップしています。
Windows Server Core による計画停止時間の短縮
SQL Server 2012 からは、Windows Server Core へのインストールがサポートされるよう
になりました。Server Core は、GUI を持たない、コマンドベースでの操作で管理する Windows
Server の構成です。以下の画面は、Server Core 上へ SQL Server 2014 をインストールして
いるときの様子です(コマンドラインから setup.exe を実行しています)
。
Server Core では、GUI が不要であるため、必要最小限の機能のみしかインストールされません。
これによって、よりセキュアな運用が可能になり、また、修正プログラムの適用回数を大きく削減
できるというメリットが得られます。Server Core の場合は、修正プログラムの数を 50~60%
程度削減できると言われており、その分 OS を再起動する回数も減らすことができます(計画停
止時間を大きく短縮することが可能です)
。
以上のように、SQL Server 2012 からは、可用性を高めるための機能強化が数多く行われていま
す。
BI/DWH 関連の新機能
SQL Server 2012 からは、DWH(データ ウェアハウス)関連の機能強化も多く行われていま
す。前述の「列ストア インデックス」は、DWH 環境で最も威力を発揮する機能ですし、そのほ
かにもデータ品質を向上させることができる「DQS(Data Quality Services)」や、データ分析
で役立つ Transact-SQL 関数、Analysis Services のインメモリ対応機能などが提供されてい
ます。それぞれの特徴は、次のとおりです。

DWH/BI 系の Transact-SQL 分析関数(Analytic Functions)のサポート
LEAD や LAG、CUME_DIST 関数などのサポートや、ウィンドウ操作が可能な OVER
句がサポートされてデータ分析が容易に。データ分析でよく利用する計算値(累積値や比
率、前年同月値、移動累計、移動平均など)を簡単に計算可能に

Analysis Services での テーブル モデル(Tabular Model)のサポート
PowerPivot で採用されているインメモリのカラムベース エンジン(xVelocity エンジ
ン)のサーバー サイドでのサポート。ビッグデータへの対応やセキュリティ強化を実現
可能に

Power View による、より容易なデータ分析レポートの作成
Power View で、データ分析レポート
を作成しているときの様子
画像を表示可能
グラフが動的に変化。
グラフ自身がスライサー
(フィルター)となる
推移を確認可能な動的な
バブル チャート

Reporting Services でデータ警告(Alerting)機能の提供

DQS(Data Quality Services)機能の提供
「データ クレンジング」や「名寄せ」、
「シノニムの定義」が可能に。データ ウェアハウ
スの構築に欠かせないデータ品質の向上が可能
DQS ツールで、データ品質を
高めるためのルール作成が可能
ここで入力した値へ
修正するようにする
→ 正しい値へ変換
正しい値
間違った値

MDS(マスター データ サービス)で Excel アドインの提供

Integration Services のユーザー インターフェース変更(操作性の向上)

Integration Services での CDC(変更データ キャプチャ)サポート

Apache Hadoop への対応(Hadoop Connector による連携など)

ODBC driver for Linux の提供

PowerPivot for Excel のバージョン アップ。ダイアグラム ビューや KPI、書式、並
べ替え列、ドリルスルー、階層、親子階層、BLOB データのサポート、DAX 関数の強化
など、多数の新機能の提供により、さらにパワフルなデータ分析レポートが作成可能に
KPI をグラフィカ
ルに設定
その他の新機能
その他の SQL Server 2012 で提供された主な新機能の概要は、次のとおりです。

Distributed Replay(分散再生)機能によるストレス テスト(高負荷テスト)の実施
が可能に(複数コンピューターからの再生実行により本番環境を想定したテストが可能)
Distributed Replay は、複数クライアントからの分散再生が可能
Distributed Replay Client
Distributed Replay Controlloer
起動
起動
DReplay.exe
起動
再生実行
再生実行
再生実行
SQL Server

拡張イベント(XEvents:Extended Events)の新しいユーザー インターフェース

リソース ガバナーの強化。CPU アフィニティへの対応など、サーバー集約化や、ホステ
ィング環境など、複数インスタンスを同居させる場合の制御が可能に

セキュリティの強化(HASHBYTES 関数での暗号化アルゴリズムの強化、ユーザー定義
サーバー ロールなど)

新しいパフォーマンス カウンターや DMO(動的管理オブジェクト)の追加、

SQL Server の起動オプションを設定するための新しいユーザー インターフェース

SQL Server Data Tools(SSDT)による開発生産性の向上
スキーマ比較やリファクタリング、デバッグなどが可能。クラウド上のデータベース
「Microsoft Azure SQL データベース」にも対応
SSDT でスキーマ比較
をしているときの様子
異なる部分は
赤や黄色、斜線
で表示される

Transact-SQL の強化
n 件目~m 件目を容易に取得できるページングや、連番作成が可能な SEQUENCE、
TRY .. CATCH での再スロー、EXEC ステートメントでの Result Set のサポートなど

新しい Transact-SQL 関数のサポート
月末を取得することができる EOMONTH や、文字列から日付データを作成することが
できる DATEFROMPARTS、文字列連結が可能な CONCAT、条件分岐が可能な IIF、
CHOOSE 関数、書式変更が可能な FORMAT 関数、例外を発生させない型変換が可能
な TRY_CONVERT 関数の提供など

FileTable による Windows ファイルのサポート(FileStream の進化形)

Management Studio の Visual Studio 2010 シェルを採用。
「コード スニペット」
や「ズーム」、
「タスク一覧」
、「マルチ ウィンドウ」のサポートなど

フルテキスト検索機能の強化(プロパティ検索への対応など)

Spatial データ型の強化(Circular Arc への対応など)

Microsoft Azure SQL データベース対応の強化(DAC v2、SQL Server Data Tools に
よる完全対応、Management Studio の Azure SQL データベース対応強化など)

その他(Remote BLOB、サービス ブローカーの強化、Semantic Search 機能、UTF-16
への対応、Local DB、StreamInsight の HA 対応など)
このように、SQL Server 2012 からも非常に多くの新機能が提供されています。中でも一番の
目玉機能/実際に役立つ機能が、
「AlwaysOn 可用性グループ」
(Availability Group)と「列スト
ア インデックス」です。
このように、SQL Server 2008 から SQL Server 2014 へ移行/アップグレードを行うユー
ザーにとっては、SQL Server 2014 から提供された新機能だけでなく、SQL Server 2008 R2 や
2012 から提供された新機能も大きな移行メリットになるので、非常に多くの移行メリットがあり
ます。特に、SQL Server 2012 と SQL Server 2014 はメジャー バージョンアップなので、本
当に多くの機能が提供されています。
これらの SQL Server 2008 R2 や 2012 からの新機能については、Step 2 以降でステップ バ
イ ステップ形式で試せるように構成しているので、ぜひ試してみてください。
Step2 では、たくさんの新機能のうち、皆さんのシステムに必ず役立つと言っても過言ではない、
便利な機能を厳選して説明し、Step3 では Transact-SQL 関連の新機能、Step4 ではその他の
役立つ機能を説明しています。いずれも新機能を簡単に試せるように説明しているので、ぜひ、皆
さんも実際に試してみてください。
1.4
SQL Server 2014 で提供された主な新機能
SQL Server の最新バージョンである SQL Server 2014 から提供された主な新機能は、次のと
おりです。
主な新機能
性能向上
• インメモリ OLTP
OLTP 向けのインメモリ エンジン(Hekaton)
• クラスター化列ストア インデックス(CCSI)
インメモリの列指向データベースの SQL Server 実装
• SSD バッファ プール拡張
• Delayed Durability(遅延永続化)
• SELECT INTO のパラレル処理
• 基数推定の進化
• 統計の増分更新
可用性
運用管理
• AlwaysOn 可用性グループで、クォーラム損失時にも
読み取り可能セカンダリへのアクセスが可能
• AlwaysOn 可用性グループで、セカンダリを最大 8台まで作成可能(SQL
Server 2012 では 4台が上限)
• クラスター(WSFC)で
CSV(クラスター共有ボリューム)をサポート
• リソース ガバナーの強化(I/O 制限など)
• パーティション スイッチやインデックス再構築時のロックの優先度変更
BI/DWH
• Power View レポートでの Analysis Services 多次元モデルへの対応
以下は Excel のアドオンとしての新機能
• Power Query for Excel
• Power Map for Excel
その他
• Microsoft Azure 上へのバックアップとバックアップ ファイルの暗号化
• AlwaysOn 可用性グループのセカンダリを Microsoft Azure 上へ作成する
ことができるウィザードの提供(クラウド DR の実現)
• Microsoft Azure 上の仮想マシン(VM)へのデータベースの複製
• データベース ファイル(.mdf)を Microsoft Azure 上に配置可能
• Microsoft Azure 上へのバックアップを支援するツールの提供
この中でも特に役立つのが「インメモリ OLTP」と「クラスター化列ストア インデックス」機能
です。どちらも大きな性能向上を実現することができる機能で、大変役立ちます。また、SSD バ
ッファ プール拡張や、Delayed Durability、SELECT INTO のパラレル処理、基数推定の進化
など、性能向上に関する新機能が多いのも非常に大きな特徴です(弊社でも、SQL Server 2014 へ
変更しただけで、バッチの性能が向上したお客様がいらっしゃったほどです)。それぞれの機能の
特徴は、次のとおりです。
性能向上に関する主な新機能
SQL Server 2014 から提供された性能向上に関する主な新機能は、次のとおりです。

インメモリ OLTP(開発コード名:Hekaton)機能による大幅な性能向上
インメモリ OLTP 機能は、OLTP(オンライン トランザクション処理)向けの新しいデ
ータベース エンジンで、インメモリで動作する(メモリにテーブルを載せられる)こと
で、大幅な性能向上を実現することができます。

クラスター化列ストア インデックス(CCSI: Clustered Column-store Index)
SQL Server 2012 では、読み取り専用の列ストア インデックス(非クラスター化列ス
トア インデックス)がサポートされていましたが、SQL Server 2014 からは、更新可
能な列ストア インデックスとして「クラスター化列ストア インデックス」
(CCSI)がサ
ポートされるようになりました。更新可能な列ストア インデックスを利用すると、次の
ような性能向上を実現できます。
39.5倍
テストに利用したハードウェア環境
・Core i7 3770K 3.5GHz
・メモリ 32GB
・SSD PLEXTOR M3P 256GB
26.5倍
性能結果は相対値
ベンチマーク結果の公開は、使用許諾契約書
で禁じられているので、グラフ内の結果は、
クラスター化列ストア インデックスの値を
100 とした場合の相対値で表しています。

バッファ プール拡張により、SSD をバッファ プールとして利用可能に
バッファ プール拡張を利用すると、次のような性能向上を実現できます。
46.7% 向上
約2倍の性能向上
テストに利用したハードウェア環境
・Core i7 3770K 3.5GHz
・メモリ 32GB
・HDD:WD30EZRX 3TB
・SSD :PLEXTOR M3P 256GB
性能結果は相対値
ベンチマーク結果の公開は、使用許諾契約
書で禁じられているので、グラフ内の結果
は、相対値で表しています。

Delayed Durability(遅延永続化)により、ログへの非同期書き込みが可能に
トランザクション ログへの遅延書き込みが行える Delayed Durability(遅延永続化)
機能が提供されたことによって、ログ書き込みの性能を大幅に向上させることができます
(更新系の処理のパフォーマンスを向上させることができます)
。

SELECT INTO でのパラレル処理が可能に
以下は、SELECT INTO を実行したときの実行プランです(パラレル Table Insert)
。
パラレル
Table Insert
弊社のお客様では、SELECT INTO のパラレル処理によって、次のような性能向上を確
認することができました。
平均で
18.3% 向上
最大で 36.6% 向上
する処理も有り

クエリ処理エンジンの進化(基数推定の進化や統計の増分更新など)

リソース ガバナーの強化(I/O 数の制限が可能に)

パーティション スイッチやインデックス再構築時のロックの優先度変更
以上のように、SQL Server 2014 には、OLTP 向けのインメモリ機能である「インメモリ OLTP」
や、DWH/BI 向けのインメモリ機能である「クラスター化列ストア インデックス」
(カラム指向
データベースの SQL Server 実装)
、SSD をバッファ プールの一部として利用可能な「バッファ
プール拡張」、トランザクション ログへの遅延書き込みが行える「Delayed Durability」、
「クエ
リ処理エンジンの進化(新しい基数推定のアルゴリズムや SELECT INTO のパラレル処理、統計
の増分更新)など、性能向上を実現できる機能が数多く搭載されています。
詳しくは後述しますが、クラスター化列ストア インデックスの早期導入を行った株式会社 gloops
では、約 240 倍の性能向上を実現しています。同社は、数多くのソーシャル ゲームを提供してい
ることで有名ですが、人気ゲーム「スカイロック」でのユーザー行動分析用 DWH 作成や、ユー
ザー ランキングの生成に SQL Server 2014 を採用し、従来 12 分かかっていたバッチ処理を、
わずか 3 秒に短縮、テーブル容量は 55GB から、わずか 2.8GB へと、1/20 にも圧縮するこ
とができています。
また、インメモリ OLTP の早期導入を行った bwin 社では約 16.7 倍の性能向上(最新の検証で
は約 30 倍の性能向上)
、FX 取引で有名な SBI リクイディティ・マーケット株式会社では約 2.5
倍の性能向上(各種のパフォーマンス チューニングによって、元々のシステムと比べると約 30
倍の性能向上)
、Edgenet 社では約 8~11 倍の性能向上を実現しています。
このように、SQL Server 2014 は、大きな性能向上を期待することができます。
クラウド連携に関する新機能(Microsoft Azure)
SQL Server 2014 は、クラウド連携に関する新機能も充実しています。その主なものは、次のと
おりです。

Microsoft Azure 上へのバックアップが可能に(BACKUP TO URL)。
バックアップ ファイルの暗号化も可能
Microsoft Azure 上の BLOB
ストレージのコンテナーを指定
して、バックアップが可能
バックアップ ファイルの
暗号化も可能

AlwaysOn 可用性グループのセカンダリを Microsoft Azure 上へ作成することができ
るウィザードの提供
AlwaysOn 可用性グループ
の設定ウィザード
セカンダリ(レプリカ)として
Microsoft Azure 上の
仮想マシンを追加できる
=クラウド DR の実現
Azure VM
(仮想マシン)
の設定

Microsoft Azure 上の仮想マシン(VM)へのデータベースの配置(Deploy)

データベース ファイル(.mdf)を Microsoft Azure 上に配置可能に

Microsoft Azure 上へのバックアップを支援するツールの提供
その他の新機能の概要
その他の SQL Server 2014 からの新機能の概要は、次のとおりです。

SQL Server AlwaysOn のパワーアップ
- クォーラム損失時にも読み取り可能セカンダリへのアクセスが可能
- FCI(フェールオーバー クラスター インスタンス)で CSV(クラスター共有
ボリューム)がサポート
- セカンダリを最大 8 台まで作成可能に(SQL Server 2012 では 4 台が上限)
最大 8台の
セカンダリを作成可能

Power View(パワー ビュー)機能の強化
Power View のレポートを Analysis Services の多次元モデル(OLAP キューブ)から
作成が可能に(SQL Server 2012 SP1 CU4 から利用可能)
Analysis Services の
多次元モデル(キューブ)から
Power View のレポートを作成
Analysis Services の
多次元モデル(キューブ)

Power Query for Excel によるさまざまなデータソースの検索/抽出/加工が可能に
Web ページ内の <Table> タグや、ファイル(Excel や CSV、XML、Text ファイル
など、フォルダー内の複数ファイルをまとめて取り込むことも可能)、SQL Server や
Microsoft Azure SQL データベース、Access、Oracle、DB2、MySQL などの各種デー
タベース、Hadoop HDFS や Microsoft Azure HDInsight(Microsoft Azure の
Hadoop 実装)
、SAP BusinessObjects BI、SharePoint List、Exchange、OData Feed、
Facebook などからデータを取得することができます。

Power Map for Excel による地図データの可視化
Power Query for Excel で取得したデータは、次のように Power Map for Excel を
利用すれば、地図データを可視化することもできます。
これらの SQL Server 2014 からの新機能については、本自習書シリーズの「SQL Server 2014
からの新機能ダイジェスト」編で、ステップ バイ ステップ形式で画面ショット満載で紹介してい
るので、こちらもぜひご覧いただければと思います。
1.5
自習書を試す環境について
この自習書で実習を行うために必要な環境は、次のとおりです。
OS
Windows Server 2008 SP2 以降 または
Windows Server 2008 R2 SP1 以降 または
Windows Server 2012 または
Windows Server 2012 R2 または
Windows 7 SP1 以降 または Windows 8 または Windows 8.1
ソフトウェア
SQL Server 2014
この自習書内でのページやテキストは、OS に Windows Server 2012 R2(x64)
、ソフトウ
ェアに SQL Server 2014 Enterprise エディション(x64)を利用して記述しています。
そのほか
この自習書を試すには、サンプル スクリプトをダウンロードして、次のページの事前作業(デ
ータベースの作成)を行っておく必要があります。
1.6
サンプル データベース(AdventureWorks2014)のダウンロード
こ の 自 習 書 内 で は 、 い く つ か の 機 能 を 試 す 手 順 で 、 CodePlex サ イ ト で 提 供 さ れ て い る
AdventureWorks2014 データベースを利用しているので、以下の URL からダウンロードして
おいてください。
CodePlex サイト
http://www.codeplex.com/MSFTDBProdSamples
Adventure Works 2014
Sample Databases をクリック
1
Adventure Works 2014 Full Database
Backup.zip をクリック
2
3
AdventureWorks2014 データベースのリストア
.zip ファイルのダウンロードが完了したら、次に、このデータベースを SQL Server 上へリスト
アします。リストアする手順は、次のとおりです。
1.
まずは、Windows エクスプローラーで、ダウンロードしたファイル(Adventure Works
2014 Full Database Backup.zip)を右クリックして、
[すべて展開]をクリックし、ファ
イルを解凍します。
1
2
解凍が完了すると、データベースのバックアップ ファイル(AdventureWorks2014.bak)
が作成されます。
2.
次に、バックアップ ファイルをリストアするために、SQL Server 2014 の Management
Studio ツールを起動します(
[スタート]画面の[Microsoft SQL Server 2014]グルー
プから[SQL Server 2014 Management Studio]をクリックします。Windows Server
2008/2008 R2 を利用している場合は、
[スタート]メニューから起動します)
。
1
3.
[サーバーへの接続]ダイアログが表示されたら、
[サーバー名]に SQL Server の名前を入
力して、
[接続]ボタンをクリックします。
1
SQL Server の名前を入力
2
4.
接続完了後、次のように Management Studio でツールバーの[ファイルを開く]ボタン
をクリックします。
1
2
サンプル スクリプトを
解凍した場所を展開して
AW2014Restore.sql を選択
3
[ファイルを開く]ダイアログが表示されたら、サンプル スクリプトを解凍したフォルダー
を展開して、
「AW2014Restore.sql」ファイルを選択し、
[開く]ボタンをクリックします。
5.
次のようにデータベースを復元するためのスクリプトが表示されるので、ツールバーの[実行]
ボタンをクリックして、スクリプトを実行します(FROM DISK= で指定する .bak ファイ
ルへのパスは、手順1 で zip ファイルを解凍したフォルダーを指定するように変更してくだ
さい。また、MOVE .. TO の TO で指定する .mdf/.ldf ファイルの作成先となるパスは、
SampleScript という名前のフォルダーを指定していますが、任意の場所へ変更してくださ
い)
。
RESTORE DATABASE AdventureWorks2014
FROM DISK = 'C:\Adventure Works 2014 Full Database Backup\AdventureWorks2014.bak'
WITH MOVE 'AdventureWorks2014_data' TO 'C:\SampleScript\AdventureWorks2014.mdf',
MOVE 'AdventureWorks2014_Log' TO 'C:\SampleScript\AdventureWorks2014.ldf'
3
1
手順1 で zipファイル
を解凍したフォルダー
を指定する
2
6.
.mdf/.ldf ファイルの
作成先は任意の場所へ
変更できます
実行後、次のように「クエリが正常に実行されました」と表示されれば、データベースのリス
トアが完了です。
1
「クエリが正常に実行されました」
と表示されることを確認
リストアが完了すると、次のように[データベース]フォルダーに AdventureWorks2014
データベースが追加されて、利用できるようになります。
1
AdventureWorks2014
データベース内のテーブル
1.7
サンプル データベース(NorthwindJ)の作成
この自習書では、サンプル スクリプトに含まれる「NorthwindJ」データベースを利用している
ので、STEP2 以降を始める前に、このデータベースを SQL Server 2014 上へ作成しておいてく
ださい。作成の手順は、次のとおりです。
1.
まずは、次のように Management Studio でツールバーの[ファイルを開く]ボタンをク
リックします。
1
2
サンプル スクリプトを
解凍した場所を展開して
NorthwindJ.sql を選択
3
[ファイルを開く]ダイアログが表示されたら、サンプル スクリプトを解凍したフォルダー
を展開して、「NorthwindJ.sql」ファイルを選択し、[開く]ボタンをクリックします。
2.
次のようにデータベースを作成するためのスクリプトが表示されるので、ツールバーの[実行]
ボタンをクリックして、スクリプトを実行します。
2
1
3.
データベースを作成
するためのスクリプト
が表示される
数秒後に実行が完了して、次のように「クエリが正常に実行されました」と表示されることを
確認します。
1
「クエリが正常に実行されました」
と表示されることを確認
以上でデータベースの作成が完了です。
なお、この NorthwindJ データベースは、Microsoft Access 2003 に付属のサンプル デー
タベース「Northwind」を SQL Server 上へアップサイズしたものを利用していますが、こ
の自習書の手順を試すために、一部のデータを加工しています。
STEP 2. SQL Server 2008 R2 以降の
必ず役立つ新機能
この STEP では、SQL Server 2008 R2 以降で提供された新機能のうち、皆さんのシ
ステムに必ず役立つと言っても過言ではない、便利な機能を厳選して紹介します。どれ
も、弊社のお客様に好評の機能ばかりなので、ぜひ試してみてください。
この STEP では、次のことを学習します。

AlwaysOn 可用性グループによる可用性の向上

AlwaysOn フェールオーバー クラスターの新機能

Windows Server Core へのインストール

包含データベース(Contained Database)によるログインや照合順序
に依存しないデータベースの作成

列ストア インデックスによる飛躍的な性能向上

Reporting Services の強化

PowerPivot 機能(PowerPivot for Excel、PowerPivot for SharePoint)
2.1
AlwaysOn 可用性グループによる可用性の向上/DR の実現
SQL Server 2012 から提供された新機能のうち、一番の目玉機能/役立つ機能が「AlwaysOn 可
用性グループ」
(Availability Group)です。AlwaysOn 可用性グループは、DBM(データベー
ス ミラーリング)と WSFC(Windows フェールオーバー クラスタリング)の良いところどり
をしたような機能で、DBM の進化版として捕らえると分かりやすい機能です。データベース複製
の基本的な仕組みの部分は、DBM と良く似ていて、DBM を利用したことのある方にはお馴染み
のキーワードが多く出てきます。
同期モードと非同期モード(データベースの複製モード)
可用性グループでのデータベースの複製は、DBM と同様に、
「同期モード」と「非同期モード」の
どちらかを選択することができます。同期モードの場合は、次のように動作します。
可用性グループでの同期モードの場合の動作
プライマリ
クライアント
セカンダリ
更新処理
受け取り完了
1
4
2
5
ログ
処理の完了
3
ログ
7
6
データ ファイル
への反映
.mdf
ログの転送
(圧縮)
.mdf
DBM の場合と同様、可用性グループは、トランザクション ログ(更新履歴)をベースとしたテク
ノロジーで、プライマリはログの情報を圧縮してセカンダリへ転送し、セカンダリはログを受け取
ったことをプライマリへ伝えます。プライマリがこれを受け取って、はじめて処理が完了(トラン
ザクションが完了)になります。このようにセカンダリへのログの転送が完了するのを待っている
ので(同期をとっているので)、この動作は「同期モード」と呼ばれています。なお、同期モード
では、障害が発生したときにプライマリとセカンダリの役割を自動的に入れ替える「自動フェール
オーバー」を設定することも可能です。
これに対して、セカンダリがログを受け取ったことを確認せずに、処理を完了とするのが「非同期
モード」(パフォーマンスを重視したモード)です。このモードは、遠隔地へのデータベースの複
製時に利用できるので、DR(災害復旧)用途として利用することができます。
AlwaysOn 可用性グループの基本構成
AlwaysOn 可用性グループでは、最大 8 つのセカンダリ(データベースの複製)を作成すること
ができます(SQL Server 2012 のときは最大 4 つまででしたが、SQL Server 2014 から最大 8
つまで作成できるようになりました)。クライアントからは、次のように「リスナー」と呼ばれる
仮想サーバー名を介してアクセスするので、どのサーバーが処理しているかは意識する必要はあり
ません。
AlwaysOn 可用性グループ(Availability Group)
セカンダリ
セカンダリ
複製
複製
プライマリ
複製
最大 8台のセカンダリ
(データベースの複製を保持
するサーバー)を作成可能
セカンダリ
複製
セカンダリ
リスナー (仮想サーバー名)
クライアントは、リスナーを介して
アクセスするので、どのサーバーが
処理しているかは意識する必要がない
クライアント
クライアント
フェールオーバー(プライマリとセカンダリの役割変更)があったとしても、クライアントのアプ
リケーションを修正する必要はなく、同じサーバー名で透過的にアクセスすることが可能です。フ
ェールオーバーにかかる時間は、わずか 10~20 秒程度であり、WSFC の場合の 30 秒~数分か
かるのに比べて、ダウンタイムを大幅に短縮することもできます。
AlwaysOn 可用性グループの利点
AlwaysOn 可用性グループの利点は、次のとおりです。

ウィザードによる容易な設定およびダッシュボードによる容易な監視が可能
ダッシュボードで
セカンダリを監視

セカンダリを遠隔地へ配置した DR(災害復旧)構成が可能。災害からの復旧時にも、
アプリケーションを修正することなく同じサーバー名(リスナー)
でアクセス可能なため、
ダウンタイム(停止時間)を大きく短縮可能

セカンダリに対して読み取りアクセスが可能(レポーティング ツールのような読み取り
中心のアプリケーションが、プライマリへ負荷をかけることなく、読み取り操作が可能)

セカンダリからバックアップを取得可能(プライマリへ負荷をかけることなく、バックア
ップを取得することが可能)

データ転送時の圧縮と暗号化が可能(データベース複製時の転送データは自動圧縮される
ためパフォーマンス良く複製することが可能。暗号化によるセキュリティ強化も可能)

自動ページ修復機能(万一プライマリ上のデータベース ページが破損した場合には、セ
カンダリ上の正常なページを利用して、自動修復が可能)

柔軟なフェールオーバー ポリシー(フェールオーバーを発生させる障害のレベルを 5 段
階で調整可能)

共有ストレージが不要な分、コスト削減が可能(可用性グループでは、それぞれのノード
がローカル ディスク内にデータベースの複製を保持するため、共有ストレージが不要。
通常、WSFC を構成する場合は、エントリー クラスの共有ストレージで数百万円、ミド
ル クラスだと一千万前後、その分のコスト削減が可能)
。また、DBM のように監視サー
バーを別途用意する必要がないため、その分のコスト削減も可能

包含データベース(Contained Database)機能により、ログイン アカウントや照合順
序に依存しないデータベースが作成可能になり、障害時のダウンタイム(停止時間)を短
縮可能(従来のバージョンでは、障害によるフェールオーバー発生後は、ログイン アカ
ウントとデータベース ユーザーとのマッピングの修復が必要)
。
このように、AlwaysOn 可用性グループには多くの利点があり、従来のバージョンの DBM(デ
ータベース ミラーリング)機能ではサポートされなかった複数セカンダリ(最大 8 台まで構成可
能。DBM では 1 台まで)や、セカンダリに対する読み取り操作/バックアップ操作が可能なアク
ティブ セカンダリが実装されています(DBM の場合はスナップショット作成時点での過去データ
の読み取りのみがサポートされるのに対して、可用性グループではリアルタイムでの読み取り操作
が可能です)。
また、従来のバージョンだと複数のテクノロジーを組み合わせないと実現できなかった構成(ロー
カル環境での高可用性と、遠隔地サーバーによる DR 構成を実現するには「WSFC と DBM 非
同期モード」あるいは「WSFC とログ配布」などの組み合わせが必要だったもの)を、可用性グ
ループではウィザード 1 つで設定可能になりました。障害からの復旧時にも、アプリケーション
を修正する必要がないので(同じサーバー名でアクセスできるため)、ダウンタイム(停止時間)
を大きく短縮することが可能です。
AlwaysOn 可用性グループを利用するための主な前提条件
AlwaysOn 可用性グループを利用するための主な前提条件は、次のとおりです。

WSFC(Windows Server フェールオーバー クラスター)のノードであること
可用性グループでは、各ノードの障害検知に WSFC のリソース監視機能を利用している
ので、可用性グループ を構成するメンバーは、必ず WSFC のノード(WSFC の管理ツ
ールであるフェールオーバー クラスター マネージャー上で「ノード」として認識されて
いるサーバー)である必要があります。
これらのノードに対して、通常の SQL Server のインストールと同様、それぞれのロー
カル ドライブへインストールした SQL Server のインスタンス、またはフェールオーバ
ー クラスター インスタンス(SQL Server クラスター)としてインストールした SQL
Server インスタンスを可用性グループのメンバーにすることができます(どちらの場合
も SQL Server 2014 Enterprise エディションが必須)。

可用性グループへ参加させるメンバーは、同じ Active Directory ドメインへ参加して
いること

可用性グループを構成する各 SQL Server のインスタンスは、サーバー レベルの照合順
序を統一しておくこと(同じ照合順序を利用していること)

SQL Server のサービス アカウントをドメイン ユーザーへ設定して、すべてのノードで
同じアカウントを利用していること

対象データベースの復旧モデルが「完全」であること

SQL Server 構成マネージャー ツールを利用して、AlwaysOn 可用性グループを有効
化しておくこと(後述)
これらの前提条件に関しては、SQL Server 2012 の自習書シリーズの新機能編 No.2「SQL
Server AlwaysOn による可用性の向上」で詳しく説明しているので、こちらもぜひご覧いただ
ければと思います。
AlwaysOn 可用性グループの有効化
AlwaysOn 可用性グループを有効化するには、次のように「SQL Server 構成マネージャー」ツ
ールで 「SQL Server サ ービス 」の プロ パテ ィを 開いて 、[ AlwaysOn 高 可用性 ]タ ブで
「AlwaysOn 可用性グループを有効にする」をチェックします。
1
3
4
2
6
5
この設定は、可用性グループを構成する全てのサーバー上で行っておく必要があります。なお、
WSFC(Windows Server フェールオーバー クラスター)のノードでない場合には、このオプシ
ョンはグレーアウトされていて、設定することができません。
AlwaysOn 可用性グループの設定方法
AlwaysOn 可用性グループの設定方法は、次のとおりです。
1.
可用性グループ(Availability Group)を設定するには、次のように Management Studio で
[AlwaysOn 高可用性]フォルダーを右クリックして、
[新しい可用性グループ ウィザード]
をクリックします。
1
2
これにより、
[新しい可用性グループ]ウィザードが起動するので、
[次へ]ボタンをクリック
します。
2.
次の[可用性グループ名の指定]ページでは、[可用性グループ名]へ任意の名前を入力(画
面は AG1)して、
[次へ]ボタンをクリックします。
1
2
3.
次の[データベースの選択]ページでは、対象としたいデータベースを選択(画面は AGTestDB)
して、[次へ]ボタンをクリックします。
1
2
4.
次の[レプリカの指定]ページでは、[レプリカの追加]ボタンをクリックして、追加したい
セカンダリへ接続します。
1
2
セカンダリへ設定したい
SQL Server の名前を指定
SERVER2 と入力
3
以下の画面は、2 台のセカンダリを追加したときの様子です(3 台のノードで可用性グループ
を構成)
。
自動フェールオーバーに
設定したレプリカ
3 台のノードで
可用性グループを構成
セカンダリへのアクセス
を許可する設定
非同期モード(高パフォーマ
ンス)に設定したセカンダリ
SERVER1 と SERVER2 の[自動フェールオーバー]をチェックすると、[同期コミット]
も自動的にチェックされて、SERVER1 と SERVER2 を自動フェールオーバーが可能な同
期モードへ設定することができます。SERVER3 は、
[同期コミット]のチェックを外してお
くことで、非同期モードへ設定することができます。
[読み取り可能なセカンダリ]では、「はい」を選択することで、セカンダリに対しても読み
取りアクセスができるようになります。
5.
次に、[リスナー]タブを開きます。このタブでは、リスナーを作成することができます(リ
スナーは、仮想サーバー名/仮想 IP アドレスになるもので、クライアントからの接続時に
利用されるサーバー名(SQL Server の名前)になります)
。
次のように[可用性グループ リスナーの作成]を選択して、[リスナーの DNS 名]へ任意
の名前(画面は AG1_Listener)、
[ポート]へは任意のポート番号(SQL Server の既定の
ポート番号は 1433)、
[ネットワーク モード]で「静的 IP」を選択して、
[追加]ボタンを
クリックします。
1
2
4
5
3
[IP アドレスの追加]ダイアログが表示されたら、任意の静的な IP アドレス(画面は
192.168.1.112)を入力して、[OK]ボタンをクリックします。[レプリカの指定]ページ
へ戻ったら、[次へ]ボタンをクリックして、次のページへ進みます。
6.
次の[最初のデータ同期を選択]ページでは、
「完全」を選択して、
[すべてのレプリカからア
クセス可能な共有ネットワーク場所を指定]で共有フォルダーへのパス(画面は
\\SERVER1\AGtemp)を入力して、[次へ]ボタンをクリックします。
1
2
3
7.
次の[検証]ページでは、可用性グループを構成できるかどうかの検証が行われます。
1
すべての[結果]が「成功」と表示されていることを確認して、[次へ]ボタンをクリックし
ます。
8.
次の[概要]ページでは、内容を確認して、[完了]ボタンをクリックします。
1
これにより、可用性グループの構築が始まります。
9.
すべての構築が完了すると、次のように結果が表示されます。
1
すべての[結果]が「成功」となっている場合は、可用性グループの構築が成功です。
10. 可用性グループの構築が完了したら、
[表示]メニューの[オブジェクト エクスプローラーの
詳細]をクリックします。これにより、次のようにセカンダリとの接続状態や同期の状態(同
期済みかどうかなど)を確認することができます。
セカンダリとの
接続状態
セカンダリとの同期の状態
非同期モードは ”同期中”
と表示される
リスナー(仮想サーバー名)の確認
次に、ウィザードで作成したリスナーを確認します。
11. 作成されたリスナーを確認するには、次のように[可用性グループ リスナー]フォルダーを
展開します。
リスナーの利用する
ポート暗号
作成されたリスナー
12. リスナーは、内部的には、WSFC のリソース(ネットワーク名および IP アドレス リソー
ス)として登録されます。これを確認するには、次のように WSFC の管理ツールである「フ
ェールオーバー クラスター マネージャー」を起動して、[役割]を開きます。
可用性グループ
の名前
現在の所有者
作成された
リスナー
13. 次に、作成したリスナー(AG1_Listener)を利用して、SQL Server への接続を試みてみま
しょう。オブジェクト エクスプローラーで、次のように[接続]メニューの[データベース エ
ンジン]をクリックして、リスナーの名前を入力し、[接続]ボタンをクリックします。
1
2
作成したリスナー
の名前を入力
3
14. 次に、データベースを展開して、テーブルなどを参照できることを確認しておきましょう。
AGTestDB データベース内
の t1 テーブル
15. 次に、オブジェクト エクスプローラーでリスナー名を右クリックして、
[プロパティ]をクリ
ックし、サーバー プロパティを表示してみます。
2
1
[名前]には、実際のプライマリの名前(SERVER1)が表示されていることを確認できます。
ダッシュボードで監視
AlwaysOn 可用性グループは、ダッシュボード機能が提供されているので、現在の状態をグラフ
ィカルに監視することが可能です。ダッシュボードを利用するには、次のように[可用性グループ
名]
(画面は AG1)を右クリックして、[ダッシュボードの表示]をクリックします。
1
ダッシュボードは、次のように表示されます。
ダッシュボードで現在の状態
を容易に把握できる
セカンダリへの読み取りアクセス
次に、セカンダリへの読み取りアクセスが問題なく行えることを確認してみましょう。セカンダリ
(画面は SERVER2)へ接続して、SELECT ステートメントを実行してみましょう。
2
1
データベース内
を参照できる
セカンダリ
へ接続
このように、可用性グループでは、セカンダリに対する読み取りアクセスができる点が大きなメリ
ットです。
セカンダリ側でのデータベース バックアップの取得
次に、セカンダリ側でデータベースの完全バックアップを実行してみましょう、これを行うには、
セ カ ン ダ リ ( SERVER2 な ど ) へ 接 続 し て 、 次 の よ う に BACKUP ス テ ー ト メ ン ト で
COPY_ONLY オプションを利用します。
BACKUP DATABASE AGTestDB
TO DISk = 'C:\temp\AGTestDB.bak'
WITH COPY_ONLY
このように、可用性グループでは、セカンダリに対してバックアップを実行することができるので、
テスト環境などを作成する際に大変便利です(本番環境と同じ環境を作成するのに、本番環境=プ
ライマリ サーバーへの負荷をかけることなく行うことができるようになります)
。
手動フェールオーバーで動作確認
次に、手動フェールオーバーを実行して、プライマリとセカンダリの役割を変更してみましょう。
1.
手動フェールオーバーを実行するには、セカンダリ(画面は SERVER2)へ接続して、
[可用
性グループ]フォルダーの可用性グループ名(AG1)を右クリックして、
[フェールオーバー]
をクリックします。
1
2.
SERVER2
へ接続
2
可用性グループ名(AG1)を
右クリックして[フェールオー
バー]をクリック
これにより、
[可用性グループのフェールオーバー]ウィザードが起動するので、
[次へ]ボタ
ンをクリックします。
1
3.
次の[新しい プライマリ レプリカの選択]ページでは、セカンダリ(画面は SERVER2)
を選択して、[次へ]ボタンをクリックします。
1
4.
次の[概要]ページでは、内容を確認して、[完了]ボタンをクリックします。
1
これでフェールオーバーが開始され、フェールオーバーの実行中は、次のように[進行状況]
ページが表示されます。
5.
フェールオーバーが完了すると、次のように[結果]ページが表示されます。
1
これで手動フェールオーバーが完了です。フェールオーバーにかかる時間は、実行されている
トランザクション量にもよりますが、10~20 秒程度で完了します。WSFC(Windows Server
フェールオーバー クラスター)を利用した SQL Server クラスターでは、30 秒~1 分程度
の時間がフェールオーバーにかかるので、可用性グループのほうがダウンタイム(障害発生時
の停止時間)を大幅に短縮することができます(これは、可用性グループの大きなメリットで
す)
。
なお、手動フェールオーバーを SQL ステートメントから実行したい場合には、次のように
ALTER AVAILABILITY GROUP ステートメントを実行します。
ALTER AVAILABILITY GROUP [可用性グループ名] FAILOVER
6.
フェールオーバーが完了したら、フェールオーバーが成功したことをオブジェクト エクスプ
ローラーから確認しておきましょう。
役割が入れ替わってい
ることを確認
7.
また、フェールオーバー クラスター マネージャーからもリソースの所有者が新しいプライマ
リ(画面は SERVER2)へ変更されていることを確認しておきましょう。
「所有者ノード」が変更
されていることを確認
8.
次に、オブジェクト エクスプローラーでリスナー名で接続して、サーバーのプロパティを表
示します。
2
1
[名前]には、新しいプライマリのサーバー名(SERVER2)が表示されていることを確認で
きます。
以上が 可用性グループの基本的な利用方法になります。非常に簡単にデータベースの複製を
作成できることを確認していただけたのではないでしょうか。可用性グループでは、アプリケ
ーションからの接続や、障害発生時の復旧作業も簡単に行うことができます。これらについて
は、SQL Server 2012 の自習書シリーズの新機能編「No.2 SQL Server AlwaysOn によ
る可用性の向上」で詳しく説明しているので、こちらもぜひご覧いただければと思います。
2.2
AlwaysOn フェールオーバー クラスター インスタンス(FCI)
AlwaysOn フェールオーバー クラスター インスタンス(FCI)は、WSFC(Windows Server フ
ェールオーバー クラスタリング)のリソースとしてインストールした SQL Server インスタンス
(SQL Server クラスター)のことを指します。
SQL Server 2012 からは、従来のバージョンの SQL Server クラスターと比べて、次の機能が
強化されています。

SMB 接続(共有フォルダー)へのデータベース配置が可能
SQL Server 2012 からは、共有ストレージが必須ではなくなり、データベースのインス
トール先としてネットワーク上の共有フォルダーを選択可能
共有フォルダーをデータベースの
インストール先として指定可能に
tempdb データベースを
ローカル ディスクへ配置可能に

tempdb データベースをローカル ディスクへ配置可能
ボトルネックになりやすい tempdb データベースをローカル ディスクへ配置できるこ
とで、SSD などより高速な内蔵ストレージへ配置して性能向上を実現可能

複数サイト(複数サブネット)フェールオーバー クラスタリングのサポート
従来のバージョンではサブネットをまたがったクラスタリングは構成不可。SQL Server
2012 からはサブネットをまたがった構成が可能に

柔軟なフェールオーバー ポリシー
フェールオーバーを発生させる障害のレベルを 5 段階で調整可能。障害検知をより詳細
に行うことが可能
このように SQL Server 2012 では、SQL Server クラスターが強化されて柔軟な構成をとれる
ようになりました。これらは、可用性の向上に繋がるだけでなく、性能向上にも役立つものです。
SQL Server 2014 からは、SQL Server クラスターで CSV(クラスター共有ボリューム)がサ
ポートされるなど、さらにパワーアップしています。
2.3
Windows Server Core へのインストールがサポート
SQL Server 2012 からは、Windows Server Core へのインストールがサポートされるように
なりました。Server Core では、必要最小限の機能のみしかインストールされないので、よりセ
キュアな運用が可能になります。また、修正プログラムの適用回数を削減できる(OS の再起動に
伴う計画停止時間を大きく短縮できる)というメリットも得られます。
対応している Server Core は、Windows Server 2012/2012 R2 または Windows Server
2008 R2 に SP1 を適用した Server Core です。
SQL Server 2014 を Server Core へインストールするには、SQL Server 2014 のインスト
ーラー(Setup.exe)をコマンドラインから実行するだけです。例えば、データベース エンジン
のみをインストールしたい場合は、次のように Setup.exe を実行するだけで、SQL Server 2014
をインストールすることができます(画面は Windows Server 2012 R2 の Server Core)
。
Setup.exe
/qs
/ACTION=Install
データベース エンジンのインストール
SQL Server のインスタンス名
/FEATURES=SQLEngine
/INSTANCENAME=MSSQLSERVER
SQL Server サービスの
サービス アカウント名とパスワード
/SQLSVCACCOUNT=".\sqlservice"
/SQLSVCPASSWORD="P@ssword"
/AGTSVCACCOUNT=".\sqlservice"
/AGTSVCPASSWORD="P@ssword"
/SQLSYSADMINACCOUNTS=".\Administrator"
SQL Server Agent サービスの
サービス アカウント名とパスワード
SQL Server の管理者アカウントの指定
使用許諾契約書への同意
/IACCEPTSQLSERVERLICENSETERMS
/qs は無人インストール オプションとしてお馴染みのオプション、/ACTION=insall でインス
トール、/FEATURES でインストールしたい機能を指定(SQLEngine の場合はデータベース エ
ンジン)
、/INSTANCENAME へ SQL Server のインスタンス名、/SQLSVCACCOUNT へ SQL
Server サービスのサービス アカウント名、/SQLSVCPASSWORD へそのアカウントのパスワ
ード、同様に /AGTSVCACCOUNT と /AGTSVCPASSWORD には SQL Server Agent サー
ビスのサービス アカウント名とパスワード、/SQLSYSADMINACCOUNTS で SQL Server の
管理者として設定したいアカウントを指定、/IACCEPTSQLSERVERLICENSETERMS でライセ
ンス条項へ同意したことを意味するオプションになっています。
その他のインストール オプションや、他の機能のインストール方法については、オンライン ブッ
クの以下の場所を参考にしてみてください。
Server Core への SQL Server 2014 のインストール
http://msdn.microsoft.com/ja-jp/library/hh231669
また、上記ページにも記載されていますが、Server Core へインストール可能な SQL Server の
機能は、次のとおりです。
機能
データベース エンジン サービス
レプリケーション機能
フルテキスト検索
Integration Services サーバー
Analysis Services
Reporting Services
Distributed Replay(分散再生)Controller
Distributed Replay(分散再生)Client
マスター データ サービス(MDS)
Data Quality Services(DQS)
サポート
◯
◯
◯
◯
◯
×
×
×
×
×
Server Core では、データベース エンジンやレプリケーション、フルテキスト検索、Integration
Services、Analysis Services のインストールがサポートされています。
2.4
包含データベース(CDB:Contained Database)
包含データベースは、ログイン アカウントや照合順序に依存しないデータベースを作成できる機
能で、SQL Server 2012 から提供されました。
以前のバージョンでのデータベース移行時の問題(不明なデータベース ユーザー)
SQL Server 2012 よりも前のバージョンでは、データベース内に作成したユーザー(データベー
ス ユーザー)は、ログイン アカウントに完全依存しているので、データベースの移行時(バック
アップ/リストアやデタッチ/アタッチによるデータベース移動時)には、ログイン アカウント
とのマッピングが切れた「不明なデータベース ユーザー」
(孤立ユーザー)が発生してしまうとい
う問題がありました。
これに対応するには、移動元と移動先で、同じ SID のログイン アカウントを作成するか、
sp_change_users_login を利用してマッピングを修復しなければなりませんでした。これでは、
ハードウェア リプレイス時のデータベース移行時や、別のサーバーへデータベースを移動したい
場合、開発機から本番機へデータベースを移動したい場合などに不便です。
ログイン アカウントに依存しないデータベース ユーザーの作成が可能に!
上記の問題を解決するために登場したのが包含データベース(Contained Database)です。包含
データベースでは、ログイン アカウントに依存しない(マッピングが不要な)データベース ユー
ザーを作成することができます(独立したデータベース ユーザーをデータベース内に含められる
ことから Contained と名付けられています)。このようにデータベース ユーザーが独立していれ
ば、データベースを別のマシンへ移動したときにも何の問題もなく利用できるようになります。
また、包含データベースでは、tempdb の照合順序にも依存しない一時テーブルの作成が可能で
す。以前のバージョンでは、一時テーブルの照合順序は tempdb の照合順序を継承していたので、
データベースの移行時には照合順序の不一致が問題となる場合がありました。
包含データベースの利用方法
包含データベースを利用するには、まずは sp_configure を利用して、SQL Server の構成オプ
ションで Contained Database Authentication(包含データベース認証)を有効化(1 へ設定)
しておく必要があります。これは次のように行います。
EXEC sp_configure 'contained database authentication', 1
RECONFIGURE
オプションの設定後は、CREATE DATABASE ステートメントでのデータベース作成時に、次の
ように CONTAINMENT=PARTIAL を付ければ、包含データベース対応のデータベースを作成
することができます。
CREATE DATABASE CDBtest
CONTAINMENT = PARTIAL
go
Management Studio からデータベースを作成する場合には、次のように[新しいデータベース]
ダイアログの[オプション]ページで、
[コンテインメントの種類]で「部分」を選択することで 包
含データベース対応のデータベースを作成することができます。
包含データベース内へデータベース ユーザーの作成
包含データベース対応のデータベース内へデータベース ユーザーを作成するには、次のように
CREATE USER ステートメントで WITH PASSWORD を指定します。
USE CDBtest
go
CREATE USER dbUser1
WITH PASSWORD = 'P@ssword'
go
このようにパスワードを指定することで、ログイン アカウントからは独立した(マッピングが不
要な)データベース ユーザーを作成することができます。
Management Studio からデータベース ユーザーを作成する場合は、次のように[データベー
ス ユーザー]ダイアログで、
[ユーザーの種類]に「パスワードを持つ SQL ユーザー」を選択し
て、ユーザー名とパスワードを指定することで、包含データベース 内へ独立したデータベース ユ
ーザーを作成することができます。
データベース ユーザーの接続
作成したデータベース ユーザーがデータベースへ接続するには、Management Studio の場合は
次のように操作します。
1
2
3
ツールバーの[データベース エンジン クエリ]ボタンをクリックして、
[データベース エンジン
への接続]ダイアログを表示し、[認証]で「SQL Server 認証」を選択、[ログイン]と[パス
ワード]に作成したデータベース ユーザーの名前とパスワードを入力して[オプション]ボタン
をクリックします。
次のように[接続プロパティ]タブが表示されたら、[データベースへの接続]で接続したいデー
タベースの名前を入力して[接続]ボタンをクリックします。
1
2
3
これでデータベースへ接続できるようになります(SQL Server の認証モードが混合モードの場
合)。クエリ エディターのステータス バーには、接続しているユーザーの名前と接続しているデ
ータベースの名前が表示されるので、これで正しく接続できたことを確認できます。
dbUser1 として CDBtest データベース
へ接続できたことを確認できる
このように、包含データベースでは、ログイン アカウントとのマッピングが不要なデータベース
ユーザーをデータベース内に作成することができるようになりました。このユーザーは、データベ
ースの移行時(バックアップ/リストアやデタッチ/アタッチによるデータベース移動時)にもそ
もまま利用できるので、ハードウェア リプレイス時のデータベース移行時や、別のサーバーへデ
ータベースを移動したい場合、開発機から本番機へデータベースを移動したい場合などでも、何の
問題もなく利用することができます。
tempdb データベースの照合順序に依存しない一時テーブルの作成
包含データベースでは、tempdb の照合順序に依存しない一時テーブルの作成も可能です。従来
のバージョンでは、CREATE TABLE ステートメントを利用して作成した一時テーブルの照合順序
は tempdb の照合順序を継承するので、データベースの移行時に、移行元と移行先で tempdb
の照合順序が異なる場合に、照合順序の不一致が発生するという問題がありました。この問題は、
次のように、包含データベースではない通常のデータベースを作成することで確認できます。
-- 包含データベースではない通常のデータベースを照合順序 Japanese_CS_AS で作成
CREATE DATABASE testDB
COLLATE Japanese_CS_AS
go
USE testDB
CREATE TABLE t1 ( a varchar(100) )
INSERT INTO t1 VALUES('aaa')
SELECT * FROM t1
-- 一時テーブル #t2 の作成
CREATE TABLE #t2 ( a varchar(100) )
INSERT INTO #t2 VALUES('aaa')
SELECT * FROM #t2
このステートメントでは、通常のデータベースを照合順序 Japanese_CS_AS で作成しているの
で、t1 テーブルの文字列データ型の列は、Japanese_CS_AS として作成されます。一方、
tempdb の照合順序は Japanese_CI_AS(既定値)へ設定しているので、一時テーブル #t2
の文字列データ型の列は Japanese_CI_AS として作成されます。このように異なる照合順序の
列がある場合に、この列を JOIN キーとして利用すると、次のようにエラーが発生してしまいま
す。
このように、包含データベースではない通常のデータベースの場合には、移行元と移行先での
tempdb の照合順序に注意する必要がありました。これに対して包含データベースでは、tempdb
の照合順序に依存しない一時テーブルの作成が可能です。一時テーブルの照合順序は、包含データ
ベースに設定された照合順序を継承するようになっているので、移行元と移行先で tempdb の照
合順序が異なっている場合でも、データベースを問題なく動作させることが可能です。このように、
SQL Server 2012 からは、包含データベースが提供されたことによって、データベースの移行が
非常に簡単に行えるようになりました。
2.5
列ストア インデックスによる飛躍的な性能向上
列ストア インデックスは、大量のデータに対する集計処理で大きな性能向上を期待できる機能で、
SQL Server 2012 から提供されました。特に、夜間バッチ処理時(夜間バッチでの日次集計や月
次集計処理など)や、DWH(データ ウェアハウス)環境での集計処理に大変役立つ機能です。
列ストア インデックスは、SQL Server 2008 R2 の PowerPivot for Excel で実装されたイ
ンメモリのカラムベース エンジン(xVelocity エンジン)を RDB へ応用したものです。このエ
ンジンでは、列単位でインデックスを格納し、それらは高度に圧縮されています。
列ストア インデックスの効果(弊社事例:1.2 億件で 25~100 倍の性能向上)
弊社のお客様データ(1 億 2 千万件の DWH)を利用して、列ストア インデックスの性能効果を
検証したところ、以下のような結果が得られました。
102倍
46.9倍
59.7倍
25倍
テストに利用したハードウェア環境
・Xeon 2.66GHz Quad*2(計8コア)
・メモリ 32GB
・RAID 10 ストレージ(2GB キャッシュ)
検証で利用したのは売上データが 1 億 2 千万件格納されている「売上」テーブルで、このテーブ
ルには「売上年月」、
「売上金額」、
「売上数量」列などがあり、以下の SELECT ステートメントを
実行したときの結果を比較しました。
-- DISTINCT
SELECT DISTINCT 売上年月 FROM 売上
-- GROUP BY
SELECT 売上年月, SUM(売上金額), SUM(売上数量) FROM 売上 GROUP BY 売上年月
グラフの FullScan は、インデックスが使用されないフル テーブル スキャンが実行されたとき
の速度、IndexScan は、非クラスター化インデックスを(売上年月, 売上金額, 売上数量)で作
成/利用したとき、ColumnStore が列ストア インデックスを作成/利用したときの実行速度で
す。ベンチマーク結果の公開は、使用許諾契約書で禁じられているので、グラフ内の結果は、それ
ぞれ列ストア インデックスでの実行時間を 100 とした場合の相対値で表しています。
列ストア インデックスを利用することで、DISTICT 処理では、フル スキャンに比べて 102 倍、
インデックス スキャンに比べて 59.7 倍の性能向上、GROUP BY 処理では、フル スキャンに比
べて 46.9 倍、インデックス スキャンに比べて 25 倍もの性能向上を確認することができました。
なお、各テストで使用したデータは、すべてメモリ上のデータ バッファ キャッシュ内へ格納され
ている状態でテストしました。したがって、初回アクセス時の(メモリ内にデータが存在しない場
合の)ディスクからの読み取りが伴う場合には、さらに性能差が顕著に現れることになります。
今回の結果の 25 倍という差は非常に大きいもので、例えば、次のような「売上年月ごとの売上金
額を表示するレポート」を思い浮かべてみてください。
このレポートを表示するのに今まで 10 秒かかっていたとします。ここに列ストア インデックス
を利用できるとすれば、25 倍もの性能向上が得られるので、わずか 0.4 秒(10 秒の 25 分の 1
のスピード)でレポートが表示されるわけです。コンピューターの世界では、3 秒以上の待ち時間
があったとすると、ユーザーが "遅い" と感じると言われています。しかし、従来のインデックス
の作成方法では、データ件数の規模が数億件レベルになる場合には、数秒間もの待ち時間が発生し
てしまうのです。これを列ストア インデックスに変更することができれば、1 秒以内でのレスポ
ンスを期待できるようになります。
また、列ストア インデックスは、このように GROUP BY 演算などによる集計処理で大きな効果
を発揮するので、夜間バッチ処理時(夜間バッチでの日次集計や月次集計処理など)にも大きな性
能向上を期待できます。
弊社事例2 ~40 億件のデータ~
次のグラフは、弊社のお客様データ(40 億件)に対して、列ストア インデックスを作成した場合
の効果です。
80.4% 圧縮
わずか 1/5 以下に!
* CCSI = クラスター化列ストア インデックス
CCSI は SQL Server 2014 から提供された
更新可能な列ストア インデックス機能
129倍の
性能向上
21倍の
性能向上
データ サイズは、203.5GB だったものが、わずか 39.9GB(5 分の 1 以下のサイズ)に、お客
様が実際に利用しているクエリのうち、「クエリ1」は 129 倍もの性能向上、「クエリ2」は 21
倍の性能向上を確認することができました。このように、列ストア インデックスは、大きな性能
向上(かつ圧縮効果)を期待できる機能なので、ぜひ試してみてください。
列ストア インデックスの作成方法
列ストア インデックスは、SQL Server 2012 では「読み取り専用」でのみの提供でしたが、SQL
Server 2014 からは「更新可能な列ストア インデックス」が提供されるようになりました。前者
は「非クラスター化列ストア インデックス」、後者は「クラスター化列ストア インデックス」
(CCSI:Clustered Column-Store Index)と呼ばれています。
非クラスター化列ストア インデックスは、次のように作成することができます。
CREATE NONCLUSTERED COLUMNSTORE INDEX インデックス名
ON テーブル名 (列名1, 列名2, 列名3, …)
CREEATE INDEX ステートメントに COLUMNSTORE キーワードを追加するだけで、列ストア
インデックスを作成することができます。列名は、従来ながらの非クラスター化インデックスを作
成するときと同様、インデックスに含めたい列をカンマ区切りで指定します。
クラスター化列ストア インデックス(CCSI)を作成したい場合には、次のように記述します。
CREATE CLUSTERED COLUMNSTORE INDEX インデックス名
ON テーブル名
クラスター化列ストア インデックスの場合は、テーブル名を指定するだけで作成することができ
ます。
GUI 操作で作成したい場合には、次のように[インデックス]フォルダーを右クリックして、
[新
しいインデックス]メニューから行うことができます。
非クラスター化列ストア イン
デックスを作成する場合
クラスター化列ストア インデッ
クス(CCSI)を作成する場合
非クラスター化列ストア インデックスの場合は、次のように[新しいインデックス]ダイアログ
で、
[追加]ボタンをクリックして、対象列を選択することができます。
1
2
列ストア インデックス
に含めたい列を選択
3
以上の操作だけで列ストア インデックスの作成が完了です。列ストア インデックスは、性能を向
上させるために大変役立つ機能なので、ぜひ活用してみてください。
また、本自習書シリーズの「SQL Server 2014 からの新機能ダイジェスト」編では、列ストア イ
ンデックスの効果を簡単に確認できるようにしたスクリプト(ステップ バイ ステップ形式での検
証スクリプト)を紹介しているので、こちらもぜひご覧いただければと思います。
クラスター化列ストア インデックスの早期導入事例
数多くのソーシャルゲームを提供していることで有名な 株式会社 gloops では、SQL Server
2014 のクラスター化列ストア インデックスを早期導入して、従来のシステムよりも約 240 倍の
性能向上を実現しています。同社の人気ゲーム「スカイロック」でのユーザー行動分析用 DWH 作
成や、ユーザー ランキングの生成に SQL Server 2014 を採用し、従来 12 分かかっていたバッ
チ処理を、わずか 3 秒に短縮、テーブル容量は 55GB から、わずか 2.8GB へと、1/20 にも
圧縮することができています。これらの詳細は、以下のマイクロソフトの事例ページで確認できる
ので、こちらもぜひご覧になってみてください。
株式会社 gloops の導入事例
http://www.microsoft.com/ja-jp/casestudies/gloops.aspx
2.6
Reporting Services の強化(地図レポート対応など)
SQL Server 2008 R2 からは、Reporting Services で地図レポートが作成できるようになった
り、Excel でお馴染みのデータバーやインジケーター、スパークラインに対応したりするなど、た
くさんの機能が追加されています。その主なものは、次のとおりです。

マップ(地図)機能の追加。Bing マップとの連携も可能

データバー、インジケーター、スパークライン機能の提供

共有データセットによるデータセットの共有およびキャッシュ機能

共有レポート パーツによるオブジェクトの共有
これらのレポートを作成する手順や、共有データセット/共有レポート パーツを利用する手順に
ついては、SQL Server 2012 の自習書シリーズの「Reporting Services によるレポート作成
上・中・下」編で詳しく説明しているので、こちらもぜひご覧いただければと思います。
SQL Server 2012 からの Reporting Services の新機能
Reporting Services は、SQL Server 2012 からも新しい機能が提供されています。その主なも
のは、次のとおりです。

Power View による容易なデータ分析レポートの作成
SQL Server 2012 からは、Power View と呼ばれる、新しいデータ分析/レポーティング
ツールが提供されました。Power View を利用すると、容易に見栄えの良いデータ分析レポ
ートを作成することが可能です。
以下の画面は、Power View を利用してデータ分析レポートを作成しているときの様子です。
Power View で、データ分析レポート
を作成しているときの様子
画像を表示可能
グラフが動的に変化。
グラフ自身がスライサー
(フィルター)となる
推移を確認可能な動的な
バブル チャート
Power View を利用すると、従来のレポーティング ツールではできなかった、さらに表現力
豊かなレポートを、簡単に作成することができます。また、よりエンドユーザーが使いやすい
ように、直感的な操作ができるようになっています。

Reporting Services での Excel エクスポート時のフォーマットが xlsx 形式へ変更
SQL Server 2008 R2 までは Office 2003 形式の .xls、SQL Server 2012 からは Office
2007 以降の .xlsx 形式に対応するようになりました。

Reporting Services のデータ警告(Alert/通知)機能
SQL Server 2012 からは、Reporting Services の新機能の 1 つとして「データ警告」機能
が提供されました。この機能を利用すれば、レポート内のデータを利用して、特定のルールに
基づいて、メールを送信するといったことを簡単に行えるようになりました。例えば、「在庫
<=発注点」というルールを設定して、在庫が発注点を下回ったら、メールを送信する、とい
う設定の場合は、次のように設定します。
データ警告の設定
「在庫 <= 発注点」というルール
を設定し、在庫が発注点を下回った
らメールを送信するようにデータ警
告を設定
警告を実行する
間隔を設定
メールの送信先や
件名の設定
データ警告機能に
よって送信された
メール
在庫 <= 発注点
という条件に合致す
るデータのみが送信
されてきている
SQL Server 2014 からの Reporting Services の新機能
SQL Server 2014 の Reporting Services からは次の機能が追加されています。

Power View レポートの Analysis Services 多次元モデルへの対応
SQL Server 2012 の Power View レ ポ ー ト で は 、 PowerPivot フ ァ イ ル ま た は
Analysis Services のテーブル モード(表形式モード)をデータソースにすることしか
できませんでしたが、SQL Server 2014 からは Analysis Services の多次元モデル(従
来ながらの OLAP キューブ)をデータソースにすることもできるようになりました。
以上のように、Reporting Services は、大きく進化しているので、ぜひ試してみてください。
2.7
PowerPivot によるインメモリ BI
PowerPivot は、SQL Server 2008 R2 から提供されたデータ分析のためのツールで、次の 2
種類があります。

PowerPivot for Excel

PowerPivot for SharePoint
PowerPivot for Excel は、Excel 2010/2013 のアドインとして提供されるクライアント側
のツール、PowerPivot for SharePoint は、SharePoint Server 2010/2013 と統合され
たサーバー側の機能です。
PowerPivot for Excel
PowerPivot for Excel は、PowerPivot(パワー ピボット)という名のとおり、従来の Excel の
ピボット テーブル機能を大きく進化させたようなツールです。これを利用すると、次のような見
栄えの良いデータ分析レポート(ピボット テーブルやグラフ)を簡単に作成することができます。
水平スライサー
ピボット テーブル
フィールド(列)
一覧
ピボット グラフ
垂直スライサー
PowerPivot for Excel の主な特徴は、次のとおりです。

インメモリ アーキテクチャによる高速なデータ処理

64 ビット(x64)にも対応(32 ビット版と 64 ビット版の提供)

さまざまなデータソースへの対応(SQL Server だけでなく、Excel ファイルや Oracle、
DB2、Teradata、Sybase、Infomix、Microsoft Azure SQL データベース、Reporting
Services、テキスト ファイル、Web ページ(HTML ファイル)、Analysis Services、
Microsoft Access などにも対応)

Excel の上限である 100 万件を超えるデータにも対応(Excel で扱えるデータ量の上限
の 1,048,576 行以上のデータにも対応。x64 環境でメモリを多く搭載していれば、数
億件のデータでも高速なデータ処理が可能)
PowerPivot for Excel の最も大きな特徴は、さまざまなデータソースへ対応している点です。SQL
Server だけでなく、普段使い慣れた Excel のワークシートや Reporting Services のレポート、
Microsoft Azure SQL データベース、Analysis Services の多次元データベースなどをデータソー
スにすることができます。いろいろなデータソースのデータを組み合わせてピボット テーブルや
ピボット グラフが作成できるのが最大の利点です。
なお、PowerPivot for Excel は、SQL Server 2008 R2/2012 のときは、「Microsoft SQL
Server PowerPivot」と呼ばれて、Excel 2010 のアドインであるものの SQL Server の機能の
一部として扱われていましたが、Excel 2013 以降では、Excel 2013 に標準で搭載されるように
なったので、Excel 2013 の機能の一部(アドイン)として扱われるようになりました。
PowerPivot for SharePoint
PowerPivot for SharePoint は、SharePoint Server 2010/2013 と統合されたサーバー
側の機能で、主な特徴は次のとおりです。

作成した分析レポートの「共有」および「セキュアなデータ格納」

Excel Services と統合した Web ブラウザー ベースの共有

共有のための見栄えの良い Web パーツ(Silverlight ベース)

バックグラウンドでのデータ更新(バッチ実行)

サーバー利用状況を監視するためのダッシュボード(CPU 利用率やメモリ使用量、リク
エスト数、利用数の多い上位レポートなどをグラフィカルに表示)
作成した分析レポートの共有(SharePoint Server 2010 の場合)
分析レポート
分析レポート
の共有
の共有
Excel Services による Web ブラウザーからの分析レポート参照
Excel Services 機能により、
Web ブラウザーから
分析レポートを参照可能
PowerPivot for SharePoint は、Excel Services と統合されているので、Web ブラウザーを利
用して分析レポートを参照することができます(Excel を開くことなく、Web ブラウザー上でス
ライサーによるフィルター操作やワークシートの移動などが可能です)
。
もちろん、次のように Excel 2010/2013 での編集も可能で、かつチェックアウト/チェックイ
ン機能やセキュリティ設定によって、同時更新やアクセス制御を行うこともできます。
Excel での編集
チェックインやチェック
アウトで同時編集を制御
セキュリティ設定により
アクセス制御が行える
また、共有のための見栄えの良い Web パーツ(Silverlight で作成された Web パーツ)として、
「PowerPivot ギャラリー」が提供されているので、分析レポートを一覧しやすくなっています。
Silverlight ベースの
PowerPivot ギャラリー
の Carousel ビュー
PowerPivot for SharePoint では、そのほかにも、データ更新をバックグラウンドでバッチ実行す
るための機能(夜間にスケジュールしておくなど)や、サーバー利用状況を監視するための管理ダ
ッシュボード(CPU 利用率やメモリ使用量、リクエスト数、利用数の多い上位レポートなどをグ
ラフィカルに表示)機能なども提供されています。
管理ダッシュボードは、次のように利用することができます。
1
CPU やメモリ
使用量
実行時間の長い
クエリ数
ユーザー接続数
やクエリ数
クエリ数やファ
イル サイズ
このように PowerPivot は、PowerPivot for SharePoint と組み合わせることで、データ分析レ
ポートを複数のユーザーでの共有できるようになります。
PowerPivot for Excel の実際の利用方法については、SQL Server 2012 の自習書シリーズの
「PowerPivot for Excel によるセルフ サービス分析」
、PowerPivot for SharePoint 環境のセ
ットアップ方法については、
「Power View&Reporting Services」編で説明しているので、こ
ちらもぜひご覧いただければと思います。
PowerPivot for Excel の SQL Server 2012 からの新機能
PowerPivot for Excel は、SQL Server 2012 でバージョン アップして、多くの新機能が提供
されました(PowerPivot 2.0 になりました)
。その主なものは、以下のとおりです。

KPI(Key Performance Indicator:重要業績評価指標)への対応

書式(Format)設定の永続化により、書式がピボットテーブルへ反映可能に

並べ替え列のサポートにより、別の列で並べ替えが可能に

ダイアグラム ビューによるグラフィカルなリレーションシップ管理のサポート

階層のサポートにより、階層関係のあるフィールド(例えば、大分類→中分類→小分類→
商品のような関係)をワンクリックで配置可能に

フィールド一覧に表示されるフィールドの表示順序の変更が可能に

パースペクティブのサポートにより、不要な列/メジャーを簡単に非表示に可能

ドリルスルーのサポート

BLOB データ(varbinary(max))のサポート

DAX(Data Analysis Expressions)関数の大幅強化。PATH や PATHITEM 関数によ
って親子階層への対応も可能
以下の画面は、ダイアグラム ビューでリレーションシップを設定しているときの様子です。
並べ替え列も
設定可能
リレーションシップを
グラフィカルに編集可能
KPI や
計算メジャー
階層の作成
が可能
以下の画面は、KPI をグラフィカルに設定しているときの様子です。
KPI をグラフィカ
ルに設定
このように PowerPivot for Excel は進化し、さらに本格的なデータ分析レポートが簡単に作成で
きるようになりました。
ビッグデータ対応のインメモリ BI
PowerPivot は、すべてのデータをメモリ内へ配置して動作する「インメモリ BI」機能です。
「xVelocity エンジン」と呼ばれるエンジンを採用して、カラムベースでデータを格納し、高度
な圧縮技術を利用しています(xVelocity は、SQL Server 2008 R2 のときは VertiPaq と呼ば
れていたエンジンで、これを進化させたものです)
。
SQL Server 2012 からは、PowerPivot のサーバー版として、Analysis Services の「テーブル
モード」
(Tabular Mode:表形式モード)が搭載されて、以下の機能も利用できるようになりまし
た。

大量データへの対応(ビッグデータ対応)

パーティショニング

ロールを利用した行レベル セキュリティ
これによって、ビッグデータへの対応や、性能向上(従来ながらの OLAP キューブよりも高速)、
セキュリティ強化を実現できるようになりました。
Analysis Services のテーブル モードは、SQL Server 2014 のインストール時に、次のように
[Analysis Services の構成]ページで「表形式モード」を選択することで、インストールする
ことができます。
表形式モード (Tabular Mode)選択すると
xVelocity モードの Analysis Services
(インメモリ BI)としてインストール可能。
Analysis Services のテーブル モードの利用方法については、SQL Server 2012 の自習書シリ
ーズの「Analysis Services によるインメモリ BI 入門」編で説明しているので、こちらもぜひ
ご覧いただければと思います。
BI システムとしての SQL Server
SQL Server の BI まわりの機能は、バージョンが上がるごとに大きく進化して、”現場で使える"
機能がどんどん増えています。
SQL Server には、次のように「BI」(Business Intelligence:ビジネス インテリジェンス)シ
ステムを構築するために必要となる機能がすべて標準で搭載されています。
BI (Business Intelligence: ビジネス インテリジェンス)システム
基幹系システム
OLAP サーバー
OLAP ツール(クライアント)
・データ分析・予測
・グラフ・クロス集計レポート
・経営ダッシュボード
・データ マイニング)
Microsoft Office Excel
SQL Server
SQL Server
Database Engine
データベース エンジン
データ ウェアハウス
Analysis Services
分析サーバー
データマート
Excel アドイン
PowerPivot、PowerView、
PowerMap、PowerQuery
Internet Explorer
Web ブラウザー
メインフレーム(汎用
機)や UNIX など
SQL Server 2012/2014
Power View
SQL Server
Database Engine
データベース エンジン
SQL Server
Database Engine
データベース エンジン
その他のデータ
ETL ツール
SQL Server
Integration Services
データ転送・変換
SQL Server
Reporting Services
レポート サーバー
データの抽出・変換が行える「Integration Services」
、データ ウェアハウス(データの格納先)
としての「Database Engine 」、データ 分析の ためのサー バー機能 を提 供する 「 Analysis
Services」、レポート機能を提供する「Reporting Services」など、BI システムを実現するた
めのすべての機能が SQL Server の標準コンポーネントとして提供されているので、手軽に(そ
れでいて高度な)BI システムを構築することができます。
実際、BI 機能を利用する目的だけで SQL Server を導入する企業もどんどん増えており、弊社の
お客様にもたくさんいらっしゃいます。弊社のお客様では、業務システムは Oracle やメインフレ
ーム、そこからデータを抽出してデータ分析レポートを作成する BI/DWH システムには SQL
Server を採用している、というケースが多数あります。もちろん、業務システムに SQL Server、
BI システムも SQL Server というお客様もいらっしゃいますし、弊社の BI/DWH システム構
築サービスへのお問い合わせもここ数年非常に増えています。
特に、Reporting Services は非常に好評で、これを利用すれば Excel と同じようなレポートを作
成することができるので、弊社のお客様では、今まで Excel で(人手で)管理していたワークシ
ート(分析レポート)を、Reporting Services に移行することで分析レポートの作成を自動化す
る、といった使い方をしていたりします。これによって、人手で管理していた運用コストの削減と、
人手を介すことによって発生していた人的ミス(計算間違いや操作ミスなど)を回避できるように
なりました。
マイクロソフトの BI 機能は、Excel のアドオンとしても進化をしています。例えば、Power Map
for Excel というアドオンを利用すれば、次のように地図データを可視化することができます。
*上の画面は、Power BI 作業開始ガイド(https://support.office.com/ja-jp/article/Power-BI---%E4%BD%9C
%E6%A5%AD%E3%81%AE%E9%96%8B%E5%A7%8B%E3%82%AC%E3%82%A4%E3%83%89-bd307
11a-7ccf-49e8-aafa-2e8f481e675d?ui=ja-JP&rs=ja-JP&ad=JP)より引用
Power Map for Excel は、SQL Server 上のデータと連動させることができるので、本当に便利
です(見栄えの良い地図レポートを簡単に作成することができます)
。
STEP 3. SQL Server 2008 R2 以降の
Transact-SQL の新機能
この STEP では、SQL Server 2008 R2 以降で提供された Transact-SQL に関連する
新機能を説明します。合わせて、Transact-SQL の実行環境である Management Studio
の新機能や、SQL Server 2012 から新しく提供された SQL Server Data Tools(SSDT)
なども説明します。
この STEP では、次のことを学習します。

Management Studio の新機能

SQL Server 2012 からの Transact-SQL の新機能
(ページング、シーケンス、再スロー、新しい関数など)

BI/DWH 系の T-SQL 分析関数(Analytic Functions)

FileTable データ型

SQL Server Data Tools(SSDT)による開発生産性の向上

Microsoft Azure SQL データベースへの対応
3.1
Management Studio の新機能
Management Studio は、SQL Server 2008 から Visual Studio のシェルに統合されていま
すが、SQL Server 2008/2008 R2 は Visual Studio 2008、SQL Server 2012 以降は Visual
Studio 2010 シェルに統合されています、これによって、SQL Server 2012 からは、Visual Studio
でお馴染みの「コード スニペット」や「ズーム機能」
、
「タスク一覧」
、
「マルチ ウィンドウ」など
が Management Studio でも利用できるようになりました。
以下の画面は、コード スニペット機能を利用しているときの様子です。
コード スニペットが
サポートされた
以下の画面は、マルチ ウィンドウで利用して、複数のクエリを実行しているときの様子です。
マルチ ウィンドウ
のサポート
このように、SQL Server 2012 以降では、Management Studio がより使いやすくなっています。
3.2
SQL Server 2012 からの Transact-SQL の新機能
SQL Server 2012 からは、Transact-SQL が強化されて、たくさんの新機能が提供されています。
その主なものは、次のとおりです。

Transact-SQL の強化
連番作成が可能な SEQUENCE や、n 件目~m 件目を容易に取得できるページング、
TRY .. CATCH での再スロー、EXEC ステートメントでの Result Set のサポートなど

新しい Transact-SQL 関数のサポート
月末を取得することができる EOMONTH や、書式変更が可能な FORMAT 関数のサポ
ートなど、主な新しい関数は、次のとおり。

関数
説明
EOMONTH
月末の取得
CONCAT
文字列連結
DATEFROMPARTS
文字列から日付データ(date 型)を生成。
例: DATEFROMPARTS('2011', '11', '11')
smalldatetime 型は SMALLDATETIMEFROMPARTS
datetime2 型は DATETIME2FROMPARTS
datetimeoffset 型は DATETIMEOFFSETFROMPARTS
FORMAT
書式変更
例: FORMAT(受注日, 'yyyy/MM/dd')
TRY_CONVERT
TRY_PARSE
例外を発生させない型変換。変換失敗は NULL を返す
例: TRY_CONVERT(datetime, '2011-11-11')
IIF
条件分岐
CHOOSE
引数の中から指定した値を取得
例: CHOOSE(2, 'test1','test2','test3') なら test2 を返す
DWH/BI 系の Transact-SQL 分析関数(Analytic Functions)のサポート
LEAD や LAG、CUME_DIST 関数などのサポートや、ウィンドウ操作が可能な OVER
句がサポートされてデータ分析が容易に。データ分析でよく利用する計算値(累積値や比
率、前年同月値、移動累計、移動平均など)を簡単に計算可能に
以降では、これらの利用方法を 1つ 1つ説明します。
シーケンス(SEQUENCE)による連番生成
SQL Server 2012 からは、他の RDBMS でお馴染みのシーケンス(SEQUENCE)がサポートさ
れて、連番を作成できるようになりました。これは次のように試すことができます。
-- シーケンスの作成。1 から始まり、1 ずつ増える値へ設定
CREATE SEQUENCE seq1
AS int
START WITH 1
INCREMENT BY 1
MAXVALUE 200000
go
-- テーブルの作成
CREATE TABLE nt1 ( a int )
-- シーケンスの値を挿入。NEXT VALUE で次の値を取得可能
INSERT INTO nt1 VALUES(NEXT VALUE FOR seq1)
INSERT INTO nt1 VALUES(NEXT VALUE FOR seq1)
INSERT INTO nt1 VALUES(NEXT VALUE FOR seq1)
1
2
3
ページング(n 件目~m 件目の取得。OFFSET .. FETCH)
SQL Server 2012 からは、ページングがサポートされるようになったので、n 件目~m 件目のデ
ータを簡単に取得できるようになりました。これは次のように試すことができます。
-- OFFSET .. FETCH で 51件目から 5件取得
SELECT * FROM nt1
ORDER BY a
OFFSET 50 ROWS
FETCH NEXT 5 ROWS ONLY
OFFSET でスキップしたい件数を指定して(画面は 50 件)
、FETCH NEXT で取得したい件数(画
面は 5 件)を指定することで、51 件目~55 件目のデータを簡単に取得することができています。
TRY .. CATCH での再スロー(THROW)
SQL Server 2008 R2 以前のバージョンの TRY .. CATCH では、CATCH で捕獲したエラーを再
スローすることができなかったので、アプリケーション側でエラーを捕獲するには、RAISERROR
ステートメントを利用して再スローを記述する必要がありました。SQL Server 2012 からは、同
じエラーを再度発生させる THROW がサポートされるようになったので、簡単に再スローを実現
できるようになりました。これは次のように試すことができます。
BEGIN TRY
-- 0 除算エラーを意図的に発生させて CATCH ブロックへ
SELECT 1 / 0
SELECT * FROM t1 -- これは実行されない
END TRY
BEGIN CATCH
THROW
-- 再スロー
END CATCH
CATCH ブロックで、同じエラーを
再度発生させることができるように
なったので、アプリケーションへエ
ラーを通達できるようになりました
EXEC ステートメントでの Result Set
SQL Server 2012 からは、EXEC ステートメントでの Result Set(結果セット)がサポートさ
れるようになりました。これは次のように試すことができます。
-- ストアド プロシージャの作成
CREATE PROC proc1
AS
SELECT a FROM t1
go
-- EXEC .. WITH RESULT SETS
EXEC proc1
WITH RESULT SETS
(
( aaa bigint )
)
aaa という名前で取得
bigint 型として取得
新しい Transact-SQL 関数のサポート
SQL Server 2012 からは、新しい Transact-SQL 関数として、月末を取得することができる
EOMONTH や、文字列から日付データを作成することができる DATEFROMPARTS、文字列連
結が可能な CONCAT、条件分岐が可能な IIF や CHOOSE 関数、書式変更が可能な FORMAT
関数、例外を発生させない型変換が可能な TRY_CONVERT 関数の提供など、便利な関数が多数
サポートされるようになりました。
関数
説明
EOMONTH
月末の取得
CONCAT
文字列連結
DATEFROMPARTS
文字列から日付データ(date 型)を生成。
例: DATEFROMPARTS('2011', '11', '11')
smalldatetime 型は SMALLDATETIMEFROMPARTS
datetime2 型は DATETIME2FROMPARTS
datetimeoffset 型は DATETIMEOFFSETFROMPARTS
FORMAT
書式変更
例: FORMAT(受注日, 'yyyy/MM/dd')
TRY_CONVERT
TRY_PARSE
例外を発生させない型変換。変換失敗は NULL を返す
例: TRY_CONVERT(datetime, '2011-11-11')
IIF
条件分岐
CHOOSE
引数の中から指定した値を取得
例: CHOOSE(2, 'test1','test2','test3') なら test2 を返す
これらは、次のように試すことができます。
EOMONTH 関数による月末の取得
EOMONTH 関数を利用すると、月末を簡単に取得することができます。これは次のように試すこ
とができます。
SELECT EOMONTH('2014/10/23')
月末(10/31)
を取得
DATEFROMPARTS 関数による文字列から日付データの作成
DATEFROMPARTS 関数を利用すると、文字列データから日付データを作成することができます。
これは次のように試すことができます。
SELECT DATEFROMPARTS('2014', '10', '23')
date 型の
日付データを
作成できる
このように DATEFROMPARTS 関数を利用すれば、date 型の日付データを簡単に作成すること
ができます。また、datetime 型の日付データを作成したい場合は DATETIMEFROMPARTS(デ
ータ型に FROMPARTS を付けたもの)
、smalldatetime 型なら SMALLDATETIMEFROM
PARTS、datetime2 型なら DATETIME2FROMPARTS、datetimeoffset 型なら DATE
TIMEOFFSETFROMPARTS といった形で、日付データ型ごとに関数が用意されています。
CONCAT 関数による文字列連結
CONCAT は、他の RDBMS でお馴染みの文字列の連結ができる関数です(SQL Server 2008 R2
以前のバージョンでは + 演算子で文字列連結を行っていましたが、その代替として利用すること
ができます)。これは次のように試すことができます。
DECLARE @a varchar(10) = 'SQL Server'
DECLARE @b varchar(10) = '2014'
SELECT CONCAT(@a, ' ', @b)
FORMAT 関数による書式設定
SQL Server 2012 からは、書式が設定できる関数として FORMART 関数が提供されました。こ
れは次のように試すことができます。
DECLARE @d datetime = '2014/10/23'
SELECT FORMAT(@d, 'yyyy年MM月dd日')
yyyy で 年(4桁)
MM で 月(2桁)
dd で 日(2桁)を
取得できる
DECLARE @f float = '0.88123'
SELECT FORMAT(@f, 'p2')
p2 でパーセント表示
で、小数点以下 2桁
で表示できる
例外を発生させない型変換が可能な TRY_CONVERT 関数
SQL Server 2012 からは、例外を発生させない型変換が可能な関数として TRY_CONVERT が
提供されました。これは次のように試すことができます。
SELECT TRY_CONVERT(datetime, '2014-13-23')
型変換が無効な場合は
NULL が返る
SQL Server 2008 R2 以前のバージョンの CONVERT 関数では、型変換が失敗する場合(無効
な値の場合)は、例外が発生しますが、TRY_CONVERT 関数では、型変換が失敗する場合には、
NULL 値を返すことで、例外を発生させないようにすることができます。
条件分岐が可能な IIF 関数
SQL Server 2012 からは、条件分岐ができる関数として IIF 関数が提供されました。これは次
のように試すことができます。
DECLARE @a varchar(10) = 'SQL Server'
SELECT IIF(@a = 'SQL Server', '真', '偽')
指定した値を取得できる CHOOSE 関数
SQL Server 2012 からは、引数の中から指定した値を取得することができる CHOOSE 関数が提
供されました。これは次のように試すことができます。
SELECT CHOOSE(2, 'test1','test2','test3')
2 を指定しているので
2番目の test2 が返る
3.3
Transact-SQL 分析関数のサポート
SQL Server 2012 からは、BI(Business Intelligence)および DWH(データ ウェアハウス)
環境で役立つ Transact-SQL の分析関数(Analytic Functions)が多数サポートされるようにな
りました。これらの分析関数では、ウィンドウ操作ができるようになるので、累積値や比率、前年
同月値、移動累計、移動平均などといったデータ分析でよく利用する計算値を簡単に導き出せるよ
うになります。これは、次のように試すことができます。
LAG 関数による前年同月値の取得
LAG 関数では、結果セットのうち、指定した行数分前のデータを取得することができます。した
がって、これを利用すれば、前年同月の値を取得する、といったことも簡単に行えます。これは次
のように試すことができます。
USE NorthwindJ
go
SELECT *, LAG(受注金額, 12) OVER(ORDER BY 年, 月) AS 前年同月
FROM
(
SELECT YEAR(受注日) 年, MONTH(受注日) 月
, SUM( od.数量 * od.単価 ) AS 受注金額
FROM 受注明細 od
INNER JOIN 受注 o ON o.受注コード = od.受注コード
GROUP BY YEAR(受注日), MONTH(受注日)
) t
ORDER BY 年, 月
LAG 関数で
12行前のデータを取得
年月ごとの
受注金額の合計を取得
前年同月(2005年 1月)
の受注金額
LAG 関数では ORDER BY 句で「年, 月」で並べ替えて、第 2 引数に「12」を指定しているの
で、12 ヶ月前(1 年前)の受注金額データ(前年同月値)を取得することができています。
累積金額の取得(OVER .. ROWS ..)
SQL Server 2012 からは、OVER 句が拡張されて、従来から利用できる PARTITION BY(グ
ループ化)と ORDER BY に加えて ROWS や RANGE を指定したウィンドウ操作ができるよ
うになりました。ROWS では、UNBOUNDED PRECEDING を指定することで、そこからウィ
ンドウを開始できるので、次のように SUM 関数を利用すれば、累積値を計算することができま
す。
SELECT *, SUM(受注金額) OVER(
PARTITION BY 年
ORDER BY 年, 月
ROWS UNBOUNDED PRECEDING ) AS 累積金額
FROM
(
SELECT YEAR(受注日) 年, MONTH(受注日) 月
, SUM( od.数量 * od.単価 ) AS 受注金額
FROM 受注明細 od
INNER JOIN 受注 o ON o.受注コード = od.受注コード
GROUP BY YEAR(受注日), MONTH(受注日)
) t
ORDER BY 年, 月
2005年 1月と 2月
を足した金額
2005年 1月と 2月、
3月 を足した金額
2005年 1月~12月
までを足した金額
2006年 1月と 2月
を足した金額
このように、SQL Server 2012 からは、ウィンドウ操作が可能な分析関数がサポートされるよう
になったので、BI/データ分析でよく利用する計算値(累積値や比率、前年同月値、移動累計、移
動平均など)を簡単に計算できるようになり大変便利になりました。
以上のように、Transact-SQL は、SQL Server 2012 から多くの機能が提供されて、大きくパワ
ーアップしました。SQL Server 2014 からは、SELECT .. INTO での並列実行が可能になったり、
インメモリ OLTP をサポートするなど、さらに強化されています。SQL Server 2014 からの新
機能については、本自習書シリーズの「SQL Server 2014 の新機能ダイジェスト」と「SQL
Server 2014 のインメモリ OLTP 機能の概要」編で説明しているので、こちらもぜひご覧いた
だければと思います。
3.4
FileTable による Windows ファイルのサポート
SQL Server 2012 からは、FileTable 機能がサポートされて、FileStream 機能よりも簡単に
Windows 上のファイルを SQL Server 上のデータベース内に格納できるようになりました。
FileStream は、SQL Server 2008 から提供された機能ですが、これを利用するには、Windows
ファイルを操作するために OpenSqlFilestream API を利用しなければなりませんでした。これ
に対して、FileTable 機能では、通常の Windows ファイルを操作するのと同様に Windows エ
クスプローラーを利用して、データベース内にファイルを格納できるようになっています。
以下の画面は、FileTable に対して Windows エクスプローラーを利用してファイルを操作して
いるときの様子です。
¥¥サーバー名¥mssqlserver¥~¥~
のように UNC 名を指定して FileTable
へアクセス可能
FileTable
FileTable 内のファイルを
Windows エクスプローラー
を利用して、通常のファイル
と同じように操作可能
FileTable の中身を次のように SELECT ステートメントで参照すると、実際の Windows ファ
イルが SQL Server データベース内に格納されていることを確認できます。
Windows エクスプローラーで
配置したファイルがテーブルへ格納
されていることを確認できる
Let's Try
それでは、FileTable を試してみましょう。FileTable は、従来の FileStream データ型を応用
した機能なので、途中までの手順が FileStream を利用する場合と同じです。
1.
まずは、FileStream 機能を有効化するために、スタート画面から[Microsoft SQL Server
2014]グループの「SQL Server 2014 構成マネージャー」をクリックして、SQL Server
構成マネージャーを起動します(Windows Server 2008/2008 R2 の場合は[スタート]
メニューから起動します)。
2.
起動後、次のように SQL Server サービスを右クリックして[プロパティ]をクリックし、
[SQL Server のプロパティ]ダイアログを開きます。
2
3
1
[FILESTREAM]タブを開いて、[Transact-SQL アクセスに対して FILESTREAM を有
効にする]と[ファイル I/O ストリーム アクセスに対して FILESTREAM を有効にする]
をチェックして、[OK]ボタンをクリックします。別マシンからアクセスさせたい場合には、
[リモート クライアントに FILESTREAM データへのアクセスを許可する]もチェックし
ます。
3.
続 い て 、 次 の よ う に sp_configure シ ス テ ム ス ト ア ド プ ロ シ ー ジ ャ を 実 行 し て 、
FileStream 機能を有効化します(Management Studio のクエリ エディターから実行しま
す)
。
EXEC sp_configure 'filestream_access_level', 2
RECONFIGURE
4.
次に、FileStream データ(または FileTable)を格納するためのファイル グループを指定し
たデータベースを「fsTestDB」という名前で作成します(データベースの作成先のフォルダ
ーは、環境にあわせて適宜変更してください)。
CREATE DATABASE fsTestDB
ON
PRIMARY
( NAME = fsTestDB_mdf
, FILENAME = 'C:\temp\fsTestDB.mdf'),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM
( NAME = fsTestDB_fs
, FILENAME = 'C:\temp\fsTestDB_FileSream')
LOG ON
( NAME = fsTestDB_log
, FILENAME = 'C:\temp\fsTestDB_Log.ldf')
go
CONTAINS FILESTREAM を指定することで、そのファイル グループを FileStream デー
タの格納用として利用できるようになります。
ここまでの手順が、FileStream を利用する場合の手順と同じです。
5.
次に、FileTable 機能を利用するために、[データベースのプロパティ]ダイアログを開きま
す。このダイアログでは、次のように[オプション]ページを開いて、
[FileStream ディレ
クトリ名]へ任意のディレクトリ名(画面は ftest。ここで設定した名前が Windows エク
スプローラーから見えるフォルダー名になります)と[FileStream 非トランザクション ア
クセス]を「Full」へ設定します。
1
2
3
次のように、接続を閉じる必要がある主旨のダイアログが表示されたら、[はい]をクリック
します。
1
6.
次に、CREATE TABLE ステートメントで FileTable を作成します。FileTable を作成する
には、次のように AS FILETABLE を指定します。
USE fsTestDB
CREATE TABLE fTable1 AS FILETABLE
WITH
(
FILETABLE_DIRECTORY = 'doctable'
,FILETABLE_COLLATE_FILENAME = database_default
)
FILETABLE_DIRECTORY には、任意のディレクトリ名(上記は doctable)を指定し、こ
こで設定した名前が Windows エクスプローラーから見えるフォルダー名になります。前述
のデータベースのプロパティで設定したディレクトリ名(画面では ftest と設定)が上位フ
ォルダーになり、次のパスで Windows エクスプローラーからアクセスできるようになりま
す。
\\サーバー名\MSSQLSERVER\ftest\doctable
¥¥サーバー名¥MSSQLSERVER¥ftest¥doctable
このように SQL Server 2012 からは、FileTable 機能がサポートされたことで、Windows
上のファイルを SQL Server データベース内に簡単に格納できるようになりました。
3.5
SQL Server Data Tools による開発生産性向上
SQL Server 2012 からは、SQL Server Data Tools(SSDT)というデータベース開発に役立
つ新しいツールが提供されました。
SSDT ツールを利用しているときの様子
Azure SQL データベースに
対してもグラフィカルな操作で
テーブル作成が可能
SSDT で
Azure SQL データ
ベース内の
テーブル一覧を参照
GUI 操作によって
CREATE TABLE ステート
メントが自動生成される
SSDT では、データベースのスキーマ比較を行ったり、リファクタリング(オブジェクト名の変更
など)、デバッグ実行(ストアド プロシージャのステップ実行)などを行ったりすることができる
ので、大変便利です。このツールは、クラウド上のデータベース「Microsoft Azure SQL データ
ベース」
(旧名:SQL Azure)にも対応しているので、オンプレミス(ローカル環境)のデータベ
ースとクラウド上のデータベースでスキーマ比較をして、定義が異なるオブジェクトがある場合に
は同じスキーマにする(更新する)
、といったことも行うことができます。
SSDT ツールでスキーマ比較をしているときの様子
SSDT でスキーマ比較
をしているときの様子
異なる部分は
赤や黄色、斜線
で表示される
SSDT(SQL Server Data Tools)のインストール
SQL Server 2014 に対応した SSDT は、次の URL からインストールすることができます。
Microsoft SQL Server Data Tools Download
http://msdn.microsoft.com/en-us/data/hh297027
1
2
なお、SSDT をインストールするには、Visual Studio が必要になるので、Visual Studio をイン
ストールしていない環境の場合には、後述の Note で紹介している「SSDT-BI」ツールを先にイ
ンストールした後に、SSDT をインストールするようにします。
Note: Visual Studio 2012/2013 に付属の SSDT は SQL Server 2012 対応の古いもの
SSDT は、Visual Studio 2012/2013 の Professional エディション以上であれば、次のようにインストール時の[イ
ンストールするオプション機能]ページからインストールすることができますが、この SSDT は SQL Server 2012 対
応のもので、古いバージョンであることに注意する必要があります(SQL Server 2014 へ対応した最新バージョンは、
上記の URL からインストールする必要があります)
。
Note: SSDT-BI(SQL Server Data Tools - Business Intelligence)
SSDT には、BI プロジェクトを作成するための SSDT-BI(SQL Server Data Tools - Business Intelligence)ツール
もあります。SSDT-BI は、SQL Server 2008 R2 以前での BIDS (Business Intelligence Development Studio)ツー
ルに相当する機能で、Reporting Services や Analysis Services、Integration Services のプロジェクトを作成するこ
とができます。
SSDT-BI は、前出の SSDT の URL と同じページから、次のようにダウンロードおよびインストールすることができ
ます。
SSDT-BI for Visual Studio 2013
のインストール
SSDT の SQL Server オブジェクト エクスプローラー
SSDT(SQL Server Data Tools)をインストールすると、「SQL Server オブジェクト エクスプ
ローラー」が追加されます。これは、次のように[表示]メニューから[SQL Server オブジェ
クト エクスプローラー]をクリックすることで、開くことができます。
SQL Server オブジェクト エクスプローラーは、Management Studio のオブジェクト エクスプ
ローラーと非常によく似ているツールで、各種のオブジェクト作成やスキーマ比較を行ったりする
ことができます。また、クエリ エディターも付属しているので、次のように任意の SQL ステー
トメントを実行することもできます(実行プランを確認することもできます)
。
SQL Server オブジェクト
エクスプローラー
クエリ エディターで
任意の SQL ステートメントを実行可能
実行プランも表示できる
SSDT で Microsoft Azure SQL データベース上のオブジェクトも簡単操作
SSDT は、クラウド上のデータベース「Microsoft Azure SQL データベース」
(以降、Azure SQL
データベースと表記します)にも対応しているので、Azure SQL データベース内のオブジェクト
を操作することもできます。
これを行うには、次のように SQL Server オブジェクト エクスプローラーで「SQL Server」ア
イコンを右クリックして、[SQL Server の追加]をクリックします。
Microsoft Azure
SQL データベースの
サーバー名を指定可能
[サーバーへの接続]ダイアログが表示されたら、[サーバー名]に Azure SQL データベースの
サーバー名、[ログイン]と[パスワード]に Azure SQL データベース上のログイン名とパスワ
ードを指定します。
これで Azure SQL データベースに接続して、次のようにオブジェクトを操作していくことができ
ます(グラフィカルな操作でテーブルを作成したりできます)
。
Azure SQL データベースに
対してもグラフィカルな操作で
テーブル作成が可能
SQL Server オブジェ
クト エクスプローラー
で Azure SQL データ
ベース内のテーブル
一覧を参照
GUI 操作によって
CREATE TABLE ステート
メントが自動生成される
SSDT でのスキーマ比較
SSDT には、Visual Studio 2008 以前のバージョンで提供されていたデータベース プロジェク
ト機能と同様、異なるサーバー間(開発機と本番機など)でのスキーマ比較(テーブルの列名やデ
ータ型、ストアド プロシージャのソースコードなどの比較)を行うことができます。
これを行うには、SQL Server オブジェクト エクスプローラーで、次のように対象データベース
を右クリックして、[スキーマ比較]をクリックします。
これによって、次のように[スキーマ比較]エディターが表示されるので、[ターゲットの選択]
で比較対象となるサーバー/データベースを選択すれば、スキーマ比較を行うことができます。
[比較]ボタンをクリックして、スキーマ比較を行った後の様子
スキーマ比較
をした結果
異なる部分は
赤や黄色、斜線
で表示される
スキーマ比較を行うと、異なる部分があった場合には、赤や黄色、斜線で表示してくれます(従来
の Visual Studio 2008 でのスキーマ比較よりも見やすくなりました)
。また、SSDT のスキーマ
比較機能では、従来からの機能と同様、異なる部分をターゲット サーバーへ反映させることも簡
単に行うことができます([更新]ボタンをクリックするだけで反映可能です)。したがって、開発
機で修正したスキーマ変更を、本番環境へ反映させる、といったことも簡単に行うことができます。
SSDT は、Azure SQL データベースにも対応しているので、オンプレミス(社内)の SQL Server
と、クラウド上の Azure SQL データベースとの間でスキーマ比較を行って、異なる部分があれ
ばそれを反映させる、といったことも簡単に(ワンクリックで)行うことができます(従来の Visual
Studio 2008 のスキーマ比較機能は Azure SQL データベースには対応していません)
。
SSDT のリファクタリング機能 ~名前やスキーマ変更が可能に~
SSDT では、リファクタリング機能が強化されて、オブジェクト名やスキーマの変更にも対応でき
るようになりました。これを利用するには、次のようにデータベースを右クリックして、[新しい
プロジェクト]をクリックし、新しいデータベース プロジェクトを作成します。
Azure SQL データベース内の
オブジェクトをもとにデータベース
プロジェクトを作成可能
Azure SQL データベース内の
オブジェクトをインポートして
スクリプトを生成可能
リファクターを行うには、次のようにビューやストアド プロシージャなどのスクリプトを表示し
て、名前を変更したいオブジェクトを右クリックして、
[リファクター]をクリックします。
1
名前を変更したいオブ
ジェクトを右クリック
2
3
新しい名前
を入力
4
[リファクター]メニューの[名前の変更]をクリックした場合は、新しい名前(変更したい名前)
を入力して[OK]ボタンをクリックすると、次のように[変更のプレビュー]ダイアログが表示
されます。
名前の変更によって影響のある
オブジェクトが一覧される
このダイアログには、名前を変更したことによって影響のあるオブジェクトが一覧されて、
[適用]
ボタンをクリックすれば、これらのオブジェクトを一括変更することができます。
リファクター機能で名前変更
商品から Products へ
もちろんテーブル自身も
自動変更される
同じ名前のテーブルを利用している
他のストアド プロシージャも自動変更
このように、SSDT では、リファクタリング機能が強化されているので大変便利です(従来の
Visual Studio 2008 のリファクタリング機能では、
「ワイルドカードの展開」と「完全修飾名」の
みの提供でした)
。
3.6
Microsoft Azure SQL データベース(SQL Azure)への対応
SQL Server 2008 R2 の Management Studio からは、マイクロソフトの提供するクラウド上の
データベース サービス「Azure SQL データベース」(旧名:SQL Azure)に接続することがで
きるようになりました(SQL Server 2008 の場合は、sqlcmd やクエリ エディターからのみ接続
が可能で、Management Studio のオブジェクト エクスプローラーからは接続することができま
せんでした)。
Azure SQL データベース
のサーバー名を指定可能
[サーバーへの接続]ダイアログでは、[サーバー名]に Azure SQL データベースのサーバー名
や、
[ログイン]と[パスワード]に Azure SQL データベース上のログイン名とパスワードを指
定することで、Azure SQL データベースへ接続することができます。
接続後は、次のようにオブジェクトを操作することができます
Azure SQL データベース
へ接続
Azure SQL データベース内の
テーブル一覧を参照できる
なお、前項で紹介した SSDT(SQL Server Data Tools)ツールを利用しても、Azure SQL デー
タベースへ接続することができるので、どちらを利用しても大丈夫です。
SQL Server 2014 の Microsoft Azure 対応機能
SQL Server 2014 からは、Microsoft Azure との連携に関する機能がさらに充実しています。こ
れらの概要は、次のとおりです。

Microsoft Azure 上へのバックアップが可能に(BACKUP TO URL)。
バックアップ ファイルの暗号化も可能
Microsoft Azure 上の BLOB
ストレージのコンテナーを指定
して、バックアップが可能
バックアップ ファイルの
暗号化も可能

AlwaysOn 可用性グループのセカンダリを Microsoft Azure 上へ作成することができ
るウィザードの提供
AlwaysOn 可用性グループ
の設定ウィザード
セカンダリ(レプリカ)として
Microsoft Azure 上の
仮想マシンを追加できる
=クラウド DR の実現
Azure VM
(仮想マシン)
の設定

Microsoft Azure 上の仮想マシン(VM)へのデータベースの配置(Deploy)

データベース ファイル(.mdf)を Microsoft Azure 上に配置可能に

Microsoft Azure 上へのバックアップを支援するツールの提供
このように SQL Server 2014 からは、クラウド対応機能がさらに充実しています。
STEP 4. SQL Server 2008 R2 以降の
その他の新機能
この STEP では、SQL Server 2008 R2 以降(2008 R2/2012)で提供された、そ
の他の新機能について説明します。
この STEP では、次のことを学習します。

マルチサーバー管理(UCP)

DAC(データ層アプリケーション)

Distributed Replay によるストレス テストの実施

拡張イベントでの GUI サポート

UI 向上(DB リストア/起動オプション)

DQS(Data Quality Services)によるデータ クレンジング/名寄せ処理

マスター データ サービス(MDS)によるマスター データ管理
4.1
マルチ サーバー管理(SQL Server ユーティリティ)
SQL Server 2008 R2 からは、「SQL Server ユーティリティ」機能が提供されて、マルチ サー
バー管理が簡単に行えるようになりました。SQL Server ユーティリティは、複数サーバーを監視
/管理できる機能で、次のように管理対象のサーバーの健康状態を容易に監視できる「ユーティリ
ティ エクスプローラー」が提供されています。
CPU 利用率やディスク使用状況などが
健全かどうかを集中管理できる
ユーティリティ
エクスプローラー
データ ファイル(.mdf)
は 100% 使用中
ログ ファイル(.ldf)
は 95% 使用中
これにより、複数のインスタンスの CPU やディスクの利用状況などを容易に監視することができ
ます。
UCP(ユーティリティ コントロール ポイント)の作成
SQL Server ユーティリティ機能では、管理ポイントとなる UCP(Utility Control Point:ユーテ
ィリティ コントロール ポイント)を作成して、UCP から他のサーバーを管理/監視します。
管理対象のインスタンス
監視
リソース状態を収集
してアップロード
監視
UCP
Utility Control Point
管理ポイント
監視
したがって、マルチ サーバー管理を行うには、まず管理ポイントとなる UCP を作成します(ユ
ーティリティ エクスプローラーから行います)
。
Let's Try
それでは、これを試してみましょう。
1.
SQL Server ユーティリティは、内部的には SQL Server Agent サービスを利用している
ので、まずは SQL Server Agent サービスをすべてのサーバーで開始しておきます。
2.
次に、Management Studio の[表示]メニューから[ユーティリティ エクスプローラー]
をクリックして、ユーティリティ エクスプローラーを表示します。
1
3.
これにより、次のように[作業の開始]タブが表示されるので、
「ユーティリティ コントロー
ル ポイント(UCP)を作成します」をクリックします。
1
2
4.
これにより、[ユーティリティ コントロール ポイントの作成]ウィザードが開始されます。
1
最初の[説明]ページでは、
[次へ]ボタンをクリックします。
5.
次の[SQL Server のインスタンスの指定]ページでは、UCP(ユーティリティ コントロー
ル ポイント)として設定したい SQL Server のインスタンスを指定します。
1
2
3
[接続]ボタンをクリックすると、
[サーバーへの接続]ダイアログが表示されるので、
[サー
バー名]へ、UCP を作成する SQL Server のインスタンス名を指定して、
[接続]ボタンを
クリックします。
6.
[SQL Server のインスタンスの指定]ページへ戻ったら、[ユーティリティ コントロール
ポイントの名前]へ任意の UCP 名を入力(画面はユーティリティ)して、[次へ]ボタンを
クリックします。
1
2
7.
次の[ユーティリティ コレクション セットのアカウント]ページでは、マルチ サーバー管
理に利用するログイン アカウントを指定します。
1
2
このログイン アカウントには、Active Directory のドメイン ユーザーを指定する必要があ
ります。また、
[SQL Server エージェント サービス アカウントを使用する]を選択した場
合は、SQL Server Agent サービスのサービス アカウントを利用することもできますが、こ
の場合も、サービス アカウントがドメイン ユーザーである必要があります。
もし、同一マシン内で複数インスタンスで試している場合には、「マシン名\ユーザー名」形
式でローカル ユーザー指定することもできますが、複数サーバーを管理する場合は、ドメイ
ン ユーザーが必須になります。
ログイン アカウントを指定したら、
[次へ]ボタンをクリックします。
8.
次の[SQL Server インスタンスの検証]ページでは、指定した SQL Server のインスタン
スが UCP として作成する条件を満たしているかどうかがチェックされます。
1
すべての項目が「成功」になっていることを確認して、[次へ]ボタンをクリックします。な
お、SQL Server Agent サービスが開始されていない場合には「エラー」、自動起動に設定さ
れていない場合には「警告」が表示されます(実際の運用で利用する場合には、SQL Server
Agent サービスを自動起動するようにしておきます)
。
9.
次の[UCP の作成の概要]ページでは、ここまで設定してきた UCP の構成を確認して、
[次
へ]ボタンをクリックします。
1
10. 次の[ユーティリティ コントロール ポイントの作成]ページでは、UCP の作成が開始され
ます。
11. すべての項目の[結果]が[成功]と表示されれば、UCP(ユーティリティ コントロール ポ
イント)の作成が完了です。
1
最後に[完了]ボタンをクリックして、ウィザードを終了します。
SQL Server ユーティリティ ダッシュボード
UCP の作成ウィザードが完了すると、ユーティリティ エクスプローラーに次のように「SQL
Server ユーティリティ ダッシュボード」(ユーティリティ エクスプローラー コンテンツ ペイ
ン)が表示されるようになります。
SQL Server ユーティリティ
ダッシュボード
サマリを確認できる
ユーティリティ エクスプローラーでは、次のように[マネージ インスタンス]をクリックすると、
UCP へ設定したインスタンスが表示されていることを確認できます。
現在は、すべての状態が「灰色」のアイコンで表示されますが、15 分ごとの状態チェックが実行
された後は、その状態がアイコン(緑のチェックマークや赤い矢印、緑の矢印など)で表示される
ようになります。
ユーティリティ エクスプローラーでは、次のように[ユーティリティ管理]をクリックすると、
状態をチェックする基準となる「グローバル ポリシー」を設定することができます。既定では、
CPU 利用率が 70% を超えた場合には赤い矢印のアイコンで表示するなどの基準値が設定され
ています。
CPU 利用率が 70% 以上
なら赤い矢印で表示
[データ ウェアハウス]タブでは、状態を保存するためのデータベースの設定が行えます。
データの保持期間
収集したデータを格納す
るデータベースの名前
15分ごとにアップロード
する設定
Note: UCP(ユーティリティ コントロール ポイント)に自動作成されるもの
UCP(ユーティリティ コントロール ポイント)として設定すると、収集したデータを格納するために、次のように
「sysutility_mdw」という名前のデータベースが自動作成されています。
このデータベースには、15 分ごとにデータがアップロードされて、データの保持期間は、既定では 1 年間です(保持期
間は、前述の[データ ウェアハウス]タブで変更可能です)。
実際のデータの収集/アップロードは、ジョブおよびシステム データ コレクションが行っています。
データ収集、アップロード
用のシステム データ コレ
クション
UCP 用のデータベース
(sysutility_mdw)を
管理するためのジョブなど
データ収集、アップ
ロード用のジョブ
データの収集/アップロードを行っているジョブは、
「sysutility_mi_collect_and_upload」で、ステップの中では、
PowerShell のスクリプトが記述されています。
管理対象インスタンスの追加
次に、管理対象のインスタンスを追加してみましょう。
1.
管理対象のインスタンスを追加するには、ユーティリティ エクスプローラーで「マネージ イ
ンスタンス」を右クリックして、「インスタンスの登録」をクリックします。
1
これにより、「インスタンスの登録」ウィザードが開始されます。
2.
最初の「説明」ページでは、
[次へ]ボタンをクリックします。
1
3.
次の[SQL Server のインスタンスの指定]ページでは、管理対象として追加したい SQL
Server のインスタンスを指定します。
1
2
3
[接続]ボタンをクリックすると、
[サーバーへの接続]ダイアログが表示されるので、
[サー
バー名]へ、管理対象として追加したい SQL Server のインスタンス名を選択して、[接続]
ボタンをクリックします。
[SQL Server のインスタンスの指定]ページへ戻ったら、
[次へ]
ボタンをクリックします。
4.
次の[ユーティリティ コレクション セットのアカウント]ページでは、ログイン アカウン
トを指定します。
1
2
このログイン アカウントには、Active Directory のドメイン ユーザーを指定して、
[次へ]
ボタンをクリックします。
5.
次の[SQL Server インスタンスの検証]ページでは、指定した SQL Server のインスタン
スが管理対象として作成する条件を満たしているかどうかがチェックされます。
1
すべての項目が「成功」になっていることを確認して、[次へ]ボタンをクリックします。な
お、SQL Server Agent サービスが開始されていない場合には「エラー」、自動起動に設定さ
れていない場合には「警告」が表示されます。
6.
次の[インスタンスの登録の概要]ページでは、
[次へ]ボタンをクリックします。
1
7.
次の[SQL Server インスタンスの登録]ページでは、管理対象のインスタンスのセットア
ップが開始されます。
1
すべての項目の結果が[成功]になれば、管理対象インスタンスの追加が完了です。
8.
ウィザードが完了すると、ユーティリティ エクスプローラーの[マネージ インスタンス]に
追加したインスタンスが表示されて、15~30 分後には状態が表示されるようになります(そ
れまでは灰色のアイコンで表示されます)
。
管理対象のインスタンスに負荷がかかっている場合は、次のように状態が表示されます。
正常な場合の
アイコン
下限値を下回っている
場合のアイコン
上限値を上回っている
場合のアイコン
アイコンの種類は、次のとおりです(上限/下限の設定方法は、後述します)
。
アイコン
説明
正常な場合(上限~下限の間)
上限を上回っている場合
下限を下回っている場合
Note: 管理対象インスタンスの削除
ユーティリティ エクスプローラーでは、管理対象のインスタンスを簡単に削除する(管理対象外にする)ことも
できます。インスタンスを削除するには、次のようにインスタンスを右クリックして、
「マネージ インスタンスの
削除」をクリックします。
ユーティリティ エクスプローラーでのデータベースの利用状況の監視
ユーティリティ エクスプローラーでは、次のように UCP 名(既定は ユーティリティ)をクリッ
クすると、
「SQL Server ユーティリティ ダッシュボード」が「ユーティリティ エクスプローラ
ー コンテンツ」ペインに表示されてサマリ(全体の概要)を確認することができます。
ダッシュボード
サマリを確認できる
ユーティリティ エクスプローラーでは、次のように[マネージ インスタンス]の「記憶域使用率」
タブをクリックすると、データベースごとの使用状況を確認することができます。
データ ファイル(.mdf)
は 100% 使用中
ログ ファイル(.ldf)
は 95% 使用中
このタブでは、次のように「ボリューム」を選択すると、ドライブごとに使用状況を確認すること
もできます。
C: ドライブは
15% 使用中
C: ドライブ内の
データベースごと
の使用率
グローバル ポリシーによる全体設定
ユーティリティ エクスプローラーでは、
[ユーティリティ管理]の[ポリシー]タブでグローバル
ポリシー(管理対象のインスタンス全体に対する上限/下限の監視設定)を確認/変更することが
できます。
CPU 利用率が 70% 以上
なら赤い矢印で表示
既定では、CPU 利用率が 70%以上、ドライブやデータ/ログ ファイルの使用量の 70%以上が
上限に設定され、これを越えると赤い矢印で表示されるように設定されています。また、[揮発性
リソースのポリシー評価]セクションでは、CPU 利用率に関して、どれぐらいの期間で、何回ポ
リシー違反を発生したのかを定義することができます。
このように、SQL Server ユーティリティを利用すると、複数のサーバーを簡単に監視できるよう
になります。
4.2
DAC(データ層アプリケーション)
DAC(データ層アプリケーション)は、同じ構成のデータベースを作成する際に便利なオブジェク
ト定義をエクスポート/配置できる機能で、SQL Server 2008 R2 から提供されました。DAC は、
開発環境から本番環境、あるいはその逆へデータベース定義を移動したり、テスト環境を構築した
りする場合に役立ちます。
DAC パッケージのエクスポート(.dacpac)
DAC では、オブジェクト定義を「DAC パッケージ」(.dacpac ファイル)としてエクスポート
することができます。それでは、これを試してみましょう。
1.
まずは、オブジェクト定義をエクスポートしたいデータベース(画面は NorthwindJ)を右
クリックして、
[タスク]の「データ層アプリケーションの抽出」をクリックします。
1
2
これにより、
「データ層アプリケーションの抽出」ウィザードが開始されるので、
[次へ]ボタ
ンをクリックして、次のページへ進みます。
2.
次の[プロパティの設定]ページでは、
[アプリケーション名]へ任意のアプリケーション名、
[DAC パッケージ ファイルに保存]へエクスポート場所となる任意のファイル パスを指定
して、[次へ]ボタンをクリックします。
1
2
3
画面は、
[アプリケーション名]に NorthwindJ、
[DAC パッケージ ファイルに保存]のパ
スには C:\temp フォルダーの下へ NorthwindJ.dacpac という名前のファイルとして作
成するように指定しています
(DAC パッケージの拡張子は、.dacpac とするようにします)
。
3.
次の[検証と概要]ページでは、内容を確認して、
[次へ]ボタンをクリックします。
1
4.
次の[パッケージのビルド]ページでは、DAC パッケージの作成状況が表示されて、結果が
「成功」と表示されれば、DAC パッケージの作成が完了です。
1
2
5.
作成が完了したら、Windows エクスプローラーを起動して、ウィザードで指定したパスにフ
ァイル(.dacpac)が作成されていることを確認しておきます。
DAC パッケージの
拡張子は .dacpac
DAC パッケージの配置(デプロイ)
次に、作成した DAC パッケージを利用して、別サーバーへ配置(デプロイ)してみましょう。
1.
DAC パッケージを配置するには、配置先となる別サーバーで、次のように[データベース]
フォルダーを右クリックして、「データ層アプリケーションの配置」をクリックします(画面
は、別インスタンス「SQL2」へ配置する場合の例です)。
1
2
これにより、
[データ層アプリケーションの配置]ウィザードが開始されるので、
[次へ]ボタ
ンをクリックして、次のページへ進みます。
2.
次の[パッケージの選択]ページでは、
[参照]ボタンをクリックして、配置したい DAC パ
ッケージ(.dacpac)を選択します。
1
2
3
3.
次の[構成の更新]ページでは、配置する際のデータベース名を指定します。
データベース名の指定
1
なお、配置先のサーバーで、データベースが作成される場所は、SQL Server をインストール
したパスの「Data」フォルダーになります。
4.
次の[概要]ページでは、内容を確認して、
[次へ]ボタンをクリックします。
1
5.
次の[DAC の配置]ページでは、DAC パッケージの配置状況が表示されて、結果がすべて
「成功」と表示されれば、DAC パッケージの配置が完了です。
1
2
6.
次に、配置されたデータベースの中身を確認してみましょう。
同じ構成のテーブル
が作成されている
データは空。
データを移行するには、
後述の bacpac を利用する
同じ構成のテーブルが作成されていることを確認できます。このように DAC パッケージを利
用すると、簡単に同じ構成のデータベースを作成することができるようになります。
Note: DAC パッケージの中身を参照
DAC パッケージの実体は、zip ファイルなので、次のようにファイルの拡張子を .zip へ変更すれば中身を参照すること
もできます。
.zip を付ける
↓
2
1
オブジェクト定義
が XML 形式で生
成されている
SQL Server 2012 からの新機能(.bacpac によるデータ移行)
SQL Server 2008 R2 から提供された DAC は、
「.dacpac」という拡張子で、オブジェクト定義
のみの移行でしたが、SQL Server 2012 からは、DAC のバージョンが 2.0 へ上がって、データ
の移行も行えるようになりました。データの移行を行う場合は、「.bacpac」という拡張子のファ
イルを作成します。
「.bacpac」を作成するには、次のようにデータベースを右クリックして、[タスク]の[データ
層アプリケーションのエクスポート]をクリックします(.dacpac の場合は[データ層アプリケ
ーションの抽出]をクリックしていました)
。
1
これにより、[データ層アプリケーションのエクスポート]ウィザードが開始されるので、次のよ
うに[エクスポート設定]ページで、
[ローカル ディスクに保存]をクリックすれば、.bacpac を
作成することができます。
Microsoft Azure
(旧名:Windows Azure)
上に保存することも可能
なお、.bacpac を作成する場合は、テーブルにクラスター化インデックスが作成されている必要
があるので、今回利用している NorthwindJ データベースの場合は、次のように「都道府県」テ
ーブルにクラスター化インデックスがない、という主旨のエラーとなってしまいます。
この場合は、次のようにクラスター化インデックスを作成してから、再度エクスポートを実行する
必要があります。
CREATE CLUSTERED INDEX cl_都道府県 ON 都道府県(都道府県)
go
.bacpac の作成に成功すると、次のように表示されます。
作成した .bacpac を別のマシンでインポートするには、次のように[データベース]フォルダー
を右クリックして、
[データ層アプリケーションのインポート]をクリックします(.dacpac の場
合は[データ層アプリケーションの配置]をクリックしていました)
。
これにより、[データ層アプリケーションのインポート]ウィザードが開始されるので、次のよう
に[ローカル ディスクからインポート]をクリックすれば、.bacpac をインポートして、データ
を丸ごと移行することができます。
作成するデータベースの名前や、
作成先となるファイル パスなどを指定
インポートされたデータベースの中身を確認すると、次のようになります。
.bacpac では
データも移行できる
このように、.bacpac を利用すると、開発環境から本番環境、あるいはその逆へデータベースを
丸ごと移動したり、テスト環境を構築する際などに便利です。また、.bacpac はクラウド上の
Microsoft Azure SQL データベース(以降、Azure SQL データベースと記述)にも対応してい
るので、開発環境で作成したデータベースを Azure SQL データベース上へ移行(複製)する場
合にも役立ちます(その逆も可能です)。
なお、Azure SQL データベースに対しては、エクスポート/インポートという操作ではなく、次
のように[タスク]メニューから[データベースを Windows Azure SQL データベースに配置]
をクリックすることで、直接配置(複製を作成)することもできます。
このウィザードでは、次のように[配置の設定]ページで、Azure SQL データベース上のサーバ
ー名を指定することで、直接データベースを複製することができます(内部的には .bacpac が作
成されて、エクスポートおよびインポートが実行されています)
。
Azure SQL データベース
のサーバー名を指定
Azure SQL データベース上
に作成するデータベースの
名前を指定
Azure SQL データベース
のエディションは、
Web か Bisiness かで選択
(2015年 9月で終了)
このウィザードの注意点としては、Azure SQL データベースのエディションが古いもの(Web か
Business)しか選択できない点です。この 2 つのエディションは、2015 年 9 月に提供終了にな
るので、Azure SQL データベース上に配置が完了した後は、エディションを最新のもの(Basic、
Standard、Premium のいずれか)へ変更しておく必要があります。エディションの変更は、次
のように Azure 管理ポータルから行うことができます。
Azure 管理ポータルで
配置したデータベース
をクリック
エディションの変更
4.3
Distributed Replay 機能による容易なストレス テストの実施
SQL Server 2012 からは、Distributed Replay(分散再生)機能が提供されて、ストレス テス
ト(高負荷テスト、ラッシュ テスト)が簡単に実施できるようになりました。この機能では、複
数のコンピューターからの再生実行(分散再生)が可能なので、よりリアルに近いテストを実行す
ることができます(実際の本番環境を想定したシミュレーションが行えるので、パフォーマンス チ
ューニング時などに役立ちます)。
SQL Server Profiler トレースの再生機能との比較
SQL Server には、以前のバージョンからプロファイラー(SQL Server Profiler)でトレースした
データ(SQL)をもとにした再生実行(トレースした SQL の再現実行)機能がありました(以下
の画面)
。
この機能では、1 行ごとに再生実行が可能なステップ実行機能や、ブレークポイントを設定して、
ブレークポイントまで実行するなどの機能があるので、アプリケーションの動作確認時などデバッ
グ用途として利用すると便利でした。
これに対して、Distributed Replay 機能では、ステップ実行などはできませんが、その代わり
に複数のコンピューターからの分散実行がサポートされるので、より本番環境に近い形でのシミュ
レーションを実施できるようになります。
Distributed Replay による再生実行
Distributed Replay 機能は、下図のように「Distributed Replay Controller」と「Distributed
Replay Client」という 2 つの機能が存在します。
Distributed Replay Utility
Distributed Replay Client
Distributed Replay Controlloer
起動
起動
DReplay.exe
起動
再生実行
SQL Server
再生実行
再生実行
Distributed Replay Controller(分散再生コントローラー)が Distributed Replay Client
(分散再生クライアント)を起動して、複数の Client からの再生実行を実施することができます。
再生には、SQL Server Profiler の TSQL_Replay テンプレートで取得したトレース ファイルを
使用します。
両者は、SQL Server 2014 インストール時の[機能の選択]画面では、次のように表示されます。
どちらも Windows サービスとしてインストールされて、既定では自動起動に設定されていない
ので、利用するためには、[管理ツール]メニューの[サービス]ツールから、次のように
Distributed Replay Controller と Distributed Replay Client サービスを起動しておく必要
があります。
また、サービス アカウントは、Active Directory のドメイン アカウントまたは Windows のロ
ーカル アカウントへ設定し、Distributed Replay Controller のインストール時に設定した管
理者アカウント(以下の画面で設定したアカウント)を指定するようにします(これを行わない場
合は、Client が Controller に接続することができないので注意してください)。
Distributed Replay Controller
(分散再生コントローラー)
のインストール時に指定する
管理者アカウント
また、ここで追加した管理者アカウントを利用して、後述の再生ツール(DReplay.exe)を実行
する必要もあります(管理者アカウントのみが再生実行を実施することができます)
。
なお、インストール完了後に、サービス アカウントや管理者アカウントを変更したい場合には、
以下の手順に従って、dcomcnfg でのアクセス許可設定、および Distributed COM Users グ
ループへのユーザー追加を行って、管理者登録を行う必要があります。
http://msdn.microsoft.com/ja-jp/library/gg471531.aspx
DReplay.exe による再生実行(Preprocess、Replay)
サービスを起動した後は、DReplay.exe ツールを利用して、再生実行を行います。このツールは、
コマンドライン ツールとして提供されていて、既定では次のパスに格納されています。
C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn
したがって、DReplay.exe ツールを利用するには、コマンドプロンプトを起動して、次のように
cd コマンドでカレント ディレクトリを移動しておく必要があります。
C:
cd \
cd Program Files (x86)\Microsoft SQL Server\120\Tools\Binn
DReplay.exe ツールでは、まず Controller 上で preprocess 処理を行って、再生したいトレ
ース ファイル(.trc)を再生可能な形式へ処理します。これは次のように実行します。
dreplay preprocess -i c:\dr\rep.trc -d c:\temp
-i オプションでトレース ファイル(画面は C:\dr フォルダーに保存した rep.trc ファイル)を
指定して、-d オプションで処理したファイルを保存する場所(Controller 上の作業ディレクトリ、
画面は C:\ temp フォルダー)を指定します。これで Distributed Replay を実行する準備が完
了です。
続いて、Distributed Replay を実行するには、DReplay.exe ツールで replay オプションを指
定して、次のように記述します。
dreplay replay -d c:\temp -o -w クライアントマシン名 -s 対象サーバー名
replay オプションでは、-d オプションで Controller 上の作業ディレクトリを指定し(画面は
C:\temp)、-o オプションで再生結果をクライアント上に保存、-w オプションでクライアント
のマシン名
(複数コンピューターからの Distributed Replay の場合は、
カンマ区切りで複数指定)
、
-s オプションで再生実行の対象としたい SQL Server のサーバー名を指定します。
-o オプションを指定した場合には、クライアント側の結果ディレクトリに実行結果(再生実行し
たときに実行された SQL を記録したトレース ファイル)が格納されています。既定では、結果
ディレクトリのパスは、以下になります。
C:\Program Files (x86)\Microsoft SQL Server\120\Tools\DReplayClient\ResultDir
結果ファイル
(.trc)
結果ファイル(.trc)を
ダブルクリックすれば
プロファイラーから結果
を確認可能
このように Distributed Replay 機能を利用すれば、簡単にストレス テスト(高負荷テスト)
を実施することができるので、パフォーマンス チューニング時などに役立ちます。
4.4
拡張イベント(XEvents)での GUI サポート
拡張イベント(XEvents:Extended Events)は、サーバーの状態を監視するときに役立つ機能
で、SQL Server 2008 から提供されたものですが、SQL Server 2008 のときは、拡張イベント
を利用するには、コマンドベースでの操作が必要であったこと、結果セットが XML 形式であった
ことから、利用には面倒なところがありました。そこで、SQL Server 2012 からは、拡張イベン
トを容易に設定できる GUI ツールが提供されるようになりました。また、結果についても、次の
ようにグラフィカルに確認できるようになりました。
結果をグラフィカル
に確認可能
デッドロックの
発生を監視
拡張イベントの設定(新規セッション ウィザード)
SQL Server 2012 からは、次のようにウィザード形式で拡張イベントを設定できるようになりま
した(拡張イベントでの監視単位である "セッション" の作成をウィザードで設定可能)
。
このウィザードでは、監視したいイベントを次のようにグラフィカルな操作で設定できます。
ログインとログア
ウトの監視が可能
バッチの完了と
開始の監視が可能
デッドロックの
監視が可能
監視したい
イベントを追加
監視可能な
イベントの一覧
また、取得したいイベント列についても、次のように簡単に設定できるようになりました。
取得したい
イベント列の選択
フィルターについても、ウィザードで設定できるようになりました。
イベント フィル
ターも設定可能
ウィザードの最後では、[スクリプト]ボタンをクリックすれば、拡張イベントを設定のためのス
クリプト(CREATE EVENT SESSION ステートメント)を生成することも可能です。
ウィザードで生成さ
れた設定スクリプト
設定後は、
[ライブ データの監視]をクリックすると、グラフィカルな監視が可能です。
xml_deadlock_report イベントを監視している場合は、次のようにデッドロックの発生をグラ
フィカルに監視することもできます。
デッドロックの
発生を監視
デッドロックの原因
となっているバッチ
デッドロックの原因
となっているバッチ
原因となった
SQL
バッチが実行された
ときの周辺情報
(イベント列)
なお、xml_deadlock_report イベントに関しては、次のように既定で作成される「system_
health」セッションを利用しても監視することができます。
4.5
データベース リストア(復元)時の UI 向上
SQL Server 2012 からは、データベース リストア時のユーザー インターフェースがより使いや
すくなりました。これは、次のように試すことができます。
グラフィカルな操作で
戻したい時刻を指定可能
[データベースの復元]ダイアログに[タイムライン]ボタンが追加されて、これをクリックする
と[バックアップのタイムライン]ダイアログが表示されるようになり、戻したい時刻(STOPAT
オプションで指定する時刻)をグラフィカルな操作で設定できるようになりました。
また、ページ単位でのリストアや、複数ファイルに対応したリストア(複数のバックアップ ファ
イルをまとめてリストア、かつバックアップ履歴へ対応)するなど、データベースをリストアする
ときの UI がより使いやすくなりました。
4.6
起動オプションを設定するための新しい UI
SQL Server 2012 からは、SQL Server の起動オプションを設定するためのユーザー インター
フェースが使いやすく変更されました。これは、次のように試すことができます。
1
2
3
4
SQL Server 構成マネージャー(Configuration Manager)ツールで、SQL Server サービスの
プロパティを開くと、[起動時のパラメーター]タブが表示されるようになって、ここから起動オ
プションを追加できるようになったので、設定しやすくなりました。
4.7
DQS(Data Quality Services)によるデータ品質の向上
SQL Server 2012 からは、DQS(Data Quality Services:データ品質サービス)と呼ばれる
データ品質を向上させるためのサービスが提供されました。DQS は、いわゆる「データ クレンジ
ング」(Data Cleansing)や「名寄せ」と呼ばれる処理が可能なサービスで、複数の業務システム(散
在したマスター データ)から DWH(データ ウェアハウス)を構築する際に大変役立つ機能です。
普段私たちが利用している業務システムでは、データの入力ミスや、システム上のイレギュラーな
処理によるデータの不整合や不一致などが起こり得ます。また、複数の業務システム(マスター デ
ータ)が存在する場合には、それぞれのマスター内でデータの格納方法がバラバラである場合があ
ります。例えば、A というシステムでは「XXX 株式会社」として登録している取引先が、B というシ
ステムでは「XXX(株)」のように省略系で登録されていたりするケースなどがあります。また、あ
るシステムでは「第一営業部」として登録されている部署名が、別のシステムでは「第 1 営業部」のよ
うに漢字の「一」が数字の「1」として登録されてしまっているようなケースもあり得ます。
データの品質に問題がある可能性
さまざまな業務システム
さまざまな業務システム
から DWH を構築
取引先マスター
XXX株式会社
SQL Server
システムが違うと
同一データが異なる形式で
格納されている場合がある
株が省略されて
いる...
取引先マスター
XXX(株)
部署マスター
メイン フレーム(汎
用機)や UNIX など
第一営業部
システムが違うと
同一データが異なる形式で
格納されている場合がある
漢字の 一 と
数字の 1 の違い
部署マスター
第1営業部
DWH
(データ ウェアハウス)
その他のデータ
このようにデータ品質に問題がある場合(同一データが異なる形式で格納されていたり、入力ミス
などで不正なデータが格納されていたりする場合)を解決するための処理が「データ クレンジン
グ」と呼ばれています。クレンジング(Cleansing)は、「洗浄」という意味なので、データ クレン
ジングは、「データをきれいに洗う」=「データを正しい状態へ整える」という意味で使われてい
ます。このようなデータ クレンジングが可能なサービスが DQS(Data Quality Services)です。
DQS Client ツールの
ホーム画面
DQS(Data Quality Services)では、次の画面のように、データの修正先を簡単に定義すること
ができるツールが用意されています。
ここで設定した値へ
修正するようにする
→ 正しい値へ変換
間違った値
正しい値
この画面では、間違っているデータ「マイクロソフト日本株式会社」などの場合に、正しいデータ
「日本マイクロソフト株式会社」へ修正するようなルールの作成を行っています。
また、このような名前の修正(変換)だけでなく、文字列の長さが正しいかどうかをチェックした
り(例えば、商品コードが 5 桁かどうかをチェックしたり)
、正規表現を利用したデータのチェッ
クを行ったりすることもできます。
データ品質を向上
させるための
さまざまなチェックが可能
このように DQS ツール 上で作成したルール /品質チェック は、次のように Integration
Services の「DQS クレンジング」タスクを利用することで、実際の処理を実行することができ
ます。
DQS クレンジング タスクで
ナレッジベースのルールに
従ったデータのクレンジング
を実行可能
DQS(Data Quality Services)のインストール
DQS(Data Quality Services)を利用するには、SQL Server 2014 のインストール時の[機
能の選択]ページで、次のように「Data Quality Services」と「Data Quality Client」、
「Integration Services」の 3 つを選択して、インストールしておく必要があります。
「Data Quality Services」はサーバー機能、「Data Quality Client」はルールを設定するため
の GUI ツール(前述の画面は、この Client ツールです)、「Integration Services」は、前述
の「DQS クレンジング」タスクを利用するためにインストールしておく必要があります。
インストールが完了した後は、次のように[スタート]画面から[Microsoft SQL Server 2014]
グループの[SQL Server 2014 Data Quality Server Installer]をクリックして、Data
Quality Server(サーバー機能)をインストールしておく必要があります(Windows Server 2008
/2008 R2 の場合は[スタート]メニューから起動します)
。
このインストーラーでは、上記のようにデータベース マスター キーへ設定するパスワードの入力
が求められるので、任意のパスワード(8 文字以上の大文字/小文字/数字/特殊文字のうちの 3
種類を含んだもの。例えば P@ssword123 など)を指定して、Enter キーを押下します。これ
により、パスワードの確認が求められるので、再度同じパスワードを入力すればインストールが始
まります。
インストールが完了すると、次のように「DQS インストーラーが正常に終了しました」と表示さ
れます。
DQS(Data Quality Services)によるデータ クレンジング処理
次に、DQS を利用したデータ クレンジングを試してみましょう。
1.
まずは、次のようにデータベース(DQStest)とテーブル(取引先マスター)を作成して、
クレンジング対象のデータを INSERT しておきます。
CREATE DATABASE DQStest
go
USE DQStest
CREATE TABLE 取引先マスター
( 取引先コード nvarchar(10) PRIMARY KEY
,取引先名
nvarchar(60) )
go
INSERT INTO 取引先マスター VALUES('TR001', '日本マイクロソフト株式会社')
INSERT INTO 取引先マスター VALUES('TR002', 'マイクロソフト日本株式会社')
INSERT INTO 取引先マスター VALUES('TR003', '日本マイクロソフト(株)')
INSERT INTO 取引先マスター VALUES('TR004', 'dummy1')
INSERT INTO 取引先マスター VALUES('TR005', 'dummy2')
INSERT INTO 取引先マスター VALUES('TR006', 'dummy3')
INSERT INTO 取引先マスター VALUES('TR0333', 'dummy4')
INSERT INTO 取引先マスター VALUES('XX011', 'dummy5')
go
SELECT * FROM 取引先マスター
2.
次に、「SQL Server 構成マネージャー」ツールを利用して、
[SQL Server ネットワークの
構成]の["インスタンス名" のプロトコル]
(既定のインスタンスの場合は MSSQLSERVER)
に表示される「TCP/IP」プロトコルが有効化されていることを確認します(Developer エ
ディションを利用している場合は、既定で無効化されているので、有効化します)
。
2
1
3.
次に、データ クレンジングのルール作成を行うために、
「Data Quality Client」ツールを起
動します。このツールは、[スタート]画面から[Microsoft SQL Server 2014]グループ
の[SQL Server 2014 Data Quality Client]から起動することができます(Windows
Server 2008/2008 R2 の場合は[スタート]メニューから起動します)
。
4.
「Data Quality Client」ツールが起動したら、次のように[サーバー名]に DQS サーバー
の名前(画面は SERVER1)を入力して、
[接続]ボタンをクリックします。
1
2
5.
次のようにホームページが表示されたら[新しいナレッジベース]をクリックします。
1
DQS では、ナレッジベースという単位で、クレンジングのための各種ルールを作成します。
6.
次のように[新しいナレッジベース]ページが表示されたら、
[名前]へ任意の名前(画面は KB
取引先)を入力して、
[アクティビティの選択]で「ナレッジ検出」を選択し、
[次へ]ボタン
をクリックします。
1
2
3
ナレッジ検出を選択することで、既存のデータをもとにクレンジングのためのルールを作成し
ていくことができます。
7.
次の[マップ]ページでは、
[データソース]に「SQL Server」、
[データベース]と[テー
ブルまたはビュー]には、先ほど作成したデータベース(DQStest)とテーブル(取引先マ
スター)を選択します。
1
2
なお、データソースには「Excel」を選択することもできるので、Excel シート内のデータを
もとにルールを作成していくことも可能です。
8.
次に、[マッピング]セクションで、[基になる列]で「取引先コード」列を選択し、[ドメイ
ンの作成]ボタンをクリックします。
2
1
3
4
5
DQS では、ドメインという単位でルールを作成します。[ドメインの作成]ダイアログが表
示されたら、
[ドメイン名]へ任意の名前(列名と同じ名前など)、
[データ型]を適宜設定(文
字列なら「String」を選択など)、
[言語]ではスペル チェックを行いたい言語を選択(日本
語は存在しないので、日本語データのみの場合は「その他」を選択)して[OK]ボタンをク
リックします。
ドメインの作成が完了したら[次へ]ボタンをクリックして、次のページへ進みます。
Note: スペル チェックに使用する言語
スペル チェックに使用する言語には、日本語を選択することができませんが(日本語のスペルチェックはできま
せん)
、次のように[言語]で[英語]を選択して、英語のデータがあった場合には、スペル ミスを検出すること
ができるので、入力ミスやイレギュラーなデータを検出するのに大変役立ちます。
1
2
3
スペル ミスがあった場合に
赤波線で表示してくれる
9.
次の[検出]ページでは、[開始]ボタンをクリックします。
1
これにより、SQL Server 上の取引先テーブルへアクセスして、データを取得し、取得が完了
すると、次のように表示されます。
1
検出された結果
2
データ件数や一意なデータ件数などが表示されます。確認後、[次へ]ボタンをクリックしま
す。
10. 次の[ドメインの値の管理]ページでは、[取引先名]ドメインを選択して、間違っているデ
ータである「マイクロソフト日本株式会社」と「日本マイクロソフト(株)」、正しいデータで
ある「日本マイクロソフト株式会社」の 3 つを Ctrl キーを押しながら選択し、右クリック
して、[シノニムとして設定]をクリックします。
1
2
これで、選択した 3 つのデータをシノニム(同一データ)として見なすことができるように
なります。
また、以下のようにシノニムの先頭データを正しいデータへ設定することで、間違ったデータ
を正しいデータへ変更できるようになります。
↓
一番上に上がる
3
1
先頭に指定したものが
修正先に変更される
2
11. 修正ルール(シノニムなど)を設定後、最後に[完了]ボタンをクリックすると、次のように
DQS サーバーへパブリッシュするかどうかを尋ねられるので[パブリッシュ]ボタンをクリ
ックします。これでナレッジベースの完成です。
1
1
12. 作成したナレッジ ベースを利用してデータ クレンジング処理を行うには、次のように
Integration Services を利用します。
DQS クレンジング タスクで
ナレッジベースのルールに
従ったデータのクレンジング
を実行可能
Integration Services のプロジェクト(SSIS パッケージ)では、データ フローの変換コン
ポーネントとして「DQS クレンジング」タスクが提供されていて、次のようにナレッジベー
スを指定して、それをもとにデータを出力させることが可能です。
なお、Integration Services を利用しないでナレッジベースの効果を検証したい場合は、次
のように Data Quality Client ツールで、
[データ品質プロジェクト]を作成することで行
うこともできます。
データ品質プロジェクトを作成して
ナレッジベースのルールに従って
データ クレンジングを実施
ここまで紹介してきたものは、DQS(Data Quality Services)機能のほんの一部です。ま
だまださまざまなルールを作成したデータのクレンジングが可能で、正規表現によるルール付
けや、似たようなレコードを検出するマッチング機能などもあるので、オンライン ブック
(SQL Server のヘルプ)などを参考にぜひチャレンジしてみてください。DQS は、データ
の品質を向上させるために大変役立つ機能です。
また、DQS については、SQL Server 2012 の自習書シリーズの新機能編「No.3 DWH(デ
ータ ウェアハウス)関連の新機能」でも詳しく説明しているので、こちらもぜひご覧いただ
ければと思います。
4.8
マスター データ サービス(MDS)によるマスター データ管理
マスター データ サービス(MDS: Master Data Services)は、SQL Server 2008 R2 から
提供されたマスター データ管理(MDM: Master Data Management)を実現することができ
るサービスです。マスター データとは、
「商品マスター」や「社員マスター」、
「顧客マスター」
、
「店
舗マスター」などのマスター テーブルのデータを指し、DWH(データ ウェアハウス)環境にお
いてはディメンション テーブルのデータ(分析軸となるデータ)を指します。したがって、MDM
(マスター データ管理)が行えるツールは、「ディメンション マネージャー」とも呼ばれていま
す。
MDM(マスター データ管理)は、次の目的で行います。

複数システムに散在するマスター データを統一管理

マスター データの品質管理
データの不整合、不一致を解消(ex.
株式会社 と(株)の違いなどを吸収)
現在、多くの企業では複数のシステムが乱立して、マスター データが散在してしまっています(マ
スター データは SQL Server だけでなく、メインフレームや Oracle、Excel ファイル、ERP な
どのいろいろなシステムに散在してしまっています)。こうしたマスター データを統一管理し、デ
ータの品質を管理していくことが MDM(マスター データ管理)で求められる機能です。
MDS の主な機能
SQL Server で提供されるマスター データ サービス(MDS)は、MDM(マスター データ管理)
を実現するためのサービスで、主に次の機能があります。

マスター データ ハブ
複数のシステムから利用できるマスター データのハブとなるインフラの提供

データ スチュワード ポータル
マスター データの総括責任者(データ スチュワード)のためのポータル サイトの提供

マスター データの管理のための Excel アドイン(SQL Server 2012 から提供)
エンティティの作成や属性の管理などを Excel 2010/2013 から行えるツール

マスター データの階層管理やバージョン管理機能

トランザクション履歴(データの変更履歴)の記録とロールバック処理への対応

マスター データのセキュリティ保護

マスター データの品質管理のための Transact-SQL 関数の提供
FuzzyLookup(あいまい参照)や Regex(正規表現)
、Split など
次の画面は、データ スチュワード ポータル(ポータル サイト)を利用して、マスター データを
管理しているときの様子です。
エンティティや属性
の管理・作成
次の画面は、Excel アドイン ツールを利用して、マスター データを管理しているときの様子です。
マスター データ サービスのインストール
マスター データ サービスのインストール手順は、次のとおりです。
1.
マスター データ サービスは、SQL Server 2014 のインストール時の[機能の選択]ページ
で、次のように[マスター データ サービス]を選択することで、インストールすることがで
きます。
マスター データ サービスの構成(MDS Configration Manager)
マスター データ サービスをインストールした後は、マスター データ サービスを構成します(マ
スター データ サービスが使用するシステム データベースや、ポータル サイトの作成など)。構
成には、
「Master Data Services Configration Manager」
(MDS 構成マネージャー)ツール
を利用します。
2.
マスター データ サービスのポータル サイトは、ASP.NET を利用しているので、「Master
Data Services Configration Manager」ツールを利用する前に、
[サーバー マネージャー]
ツールを利用して、次のように[役割と機能の追加]から、IIS(Web サーバー)と ASP.NET、
Windows 認証などをインストールしておく必要があります。
役割と機能の追加ウィザードの起動
[サーバーの役割の選択]ページでは、[Web サーバー(IIS)
]を選択して、追加します。
1
2
[機能の選択]ページでは、次のように[ASP.NET 4.5]や[HTTP アクティブ化]機能を
選択して、追加します。
・
・
・
[役割サービスの選択]ページ(Web サーバーの役割)では、次のように[Windows 認証]
や[.NET 拡張機能]などの役割サービスを選択して、追加します。
3.
IIS や ASP.NET などのインストールが完了したら、
[スタート]画面から[Microsoft SQL
Server 2014]グループの[SQL Server 2014 Master Data Services Configration
Manager]をクリックして、Master Data Services Configration Manager(以降、MDS
Configration Manager と記述します)ツールを起動します。
4.
MDS Configration Manager ツールが起動すると、次のように表示されます。
もし、ここで .svc ハンドラー マッピングの警告が出る場合には、
ASP.NET や HTTP アクティブ化機能などが正しくインストール
されていない場合なので、前の手順を確認してみてください
5.
このツールでは、次のように[データベース構成]ページを開いて、[データベースの作成]
ボタンをクリックし、MDS が利用するシステム データベースを作成します。
1
2
3
[データベースの作成]ウィザードが開始されたら、[次へ]ボタンをクリックします。
6.
次の[データベース サーバー]ページでは、[SQL Server インスタンス]へデータベース
を作成したい SQL Server のインスタンス名を入力、
[認証の種類]で任意の認証方法を選択
して、[接続テスト]ボタンをクリックします。
1
2
3
接続に成功したら、[次へ]ボタンをクリックします。
7.
次の[データベース]ページでは、[データベース名]へ任意のデータベース名を入力(画面
は MDS と入力)して、
[次へ]ボタンをクリックします。
1
2
8.
次の[管理者アカウント]ページでは、マスター データ サービスの管理者アカウント(画面
は MATUMO\Administrator アカウント)を指定して、
[次へ]ボタンをクリックします。
1
1
9.
次の[概要]ページでは、ここまでの設定を確認して、[次へ]ボタンをクリックします。
1
これにより、データベースの作成が始まります(作成には 1~2 分程度かかります)
。
10. データベースの作成が完了すると、次のように[タスク]の[状態]が「成功」と表示されま
す。
1
2
[完了]ボタンをクリックして、ウィザードを終了します。
11. MDS Configration Manager の[データベース構成]ページへ戻ったら、作成したデータベ
ース名が表示されて、[システム設定]セクションでマスター データ サービスに関するシス
テム設定の確認と変更ができることを確認できます。
作成した
データベース
システム設定
12. 続いて、マスター データ サービスの管理サイト(ASP.NET ベースのポータル サイト)を作
成するために、次のように[Web 構成]ページを開きます。
1
2
3
今回は、既定の Web サイト内へ新しいアプリケーション(と仮想ディレクトリ)を作成す
るので、
[Web サイト]で「Default Web Site」を選択して、[アプリケーションの作成]
ボタンをクリックします。
13. 次のように[Web アプリケーションの作成]ダイアログが表示されたら、[別名]へ任意の
エイリアス名(仮想ディレクトリ名。画面は MDS)を入力します。
1
2
3
[ユーザー名]と[パスワード]には、アプリケーション プールの実行ユーザー アカウント
名(画面は MATUMO\sqlservice)とパスワードを入力して、[OK]ボタンをクリックし
ます。
14. [Web 構成]ページへ戻ったら、[データベースへのアプリケーションの関連付け]セクシ
ョンの[選択]ボタンをクリックします。
2
3
1
4
[データベースへの接続]ダイアログが表示されたら、
[接続]ボタンをクリックして、
[マス
ター データ サービス データベース]で、前の手順で作成したデータベース(画面は MDS)
を選択して、[OK]ボタンをクリックします。
15. [Web 構成]ページへ戻ったら、[適用]ボタンをクリックします。
2
SQL Server 2012 から提供された
「DQS」(データ品質サービス)
との統合機能を利用する場合には
[適用]後、これをクリックする
1
数十秒後に、
[構成の完了]ダイアログが表示されて、
「Web アプリケーションの設定が正常
に適用されました」というメッセージが表示されれば、サイトの作成が完了です。このダイア
ログでは、
「ブラウザーで Web アプリケーションを起動する」がチェックされていることを
確認して、
[OK]ボタンをクリックします。
16. これにより、次のページが表示されます。
1
ここでは、
[マスター データ マネージャーのホームページを開きます]をクリックします。
17. これにより、
「マスター データ マネージャーのホーム ページ」
(ポータル サイトのトップペ
ージ)が開かれます。
このポータル サイトは、
[Web 構成]ページで「Default Web Site」サイトの「MDS」ア
プリケーションとして作成したので、次の URL からもアクセスすることができます。
http://サーバー名/MDS
Excel 用マスター データ サービス アドインのインストール
次に、
「Excel 用マスター データ サービス アドイン」をインストールします(このアドインは、
SQL Server 2012 から提供されました)。このツールを利用すれば、エンティティの作成や属性
の設定などを Excel 2010/2013 から行えるようになります(SQL Server 2008 R2 のときは、
ポータル サイトを利用して、これらの操作を行っていました)
。
1.
Excel 用マスター データ サービス アドインをインストールするには、ポータル サイトで
「Microsoft Excel 用マスター データ サービス アドインをインストールする」をクリック
するか、次の URL へアクセスします。
Microsoft Excel 用 Microsoft SQL Server 2014 マスター データ サービス アドイン
http://www.microsoft.com/ja-jp/download/details.aspx?id=42298
2.
ダウンロードが完了したら、
「MasterDataServicesExcelAddin.msi」ファイルをダブルク
リックして、次のようにインストールを実行します。
なお、このアドインをインストールするには、「Visual Studio 2010 Tools for Office
Runtime」が必要になるので、このラインタイムをインストールしていない場合には、次の
URL からダウンロードして、インストールしておく必要があります。
Visual Studio 2010 Tools for Office Runtime
http://www.microsoft.com/ja-jp/download/details.aspx?id=44074
3.
インストールが完了したら Excel 2013 を起動します。Excel 2013 を起動すると、次のよ
うに[マスター データ]タブが表示されることを確認できます。
これで、
「Excel 用マスター データ サービス アドイン」のインストールが完了です。
以上で、MDS(マスター データ サービス)関連のツールのインストールおよび構成が完了
です。以降では、MDS 上にモデルやエンティティの作成、属性の設定などを行って、マスタ
ー データを管理する方法を説明します。
モデルの作成
マスター データの管理を行うには、まずはモデルを作成します。
1.
モデルを作成するには、ポータル サイト(マスター データ マネージャー)のホーム ページ
を開いて、次のように[システム管理]をクリックします。
1
2.
次のように[モデルの追加]ページが表示されたら、[モデル名]へ「商品モデル」など任意
のモデル名を入力して、[保存]ボタン(フロッピーの形のアイコン)をクリックします。
2
1
3.
これにより、[モデルのメンテナンス]ページが表示されて、モデルの一覧へ「商品モデル」
が追加されて、モデルが作成されたことを確認できます。
モデルが作成された
ことを確認
エンティティと属性の作成
モデルの作成後は、エンティティと属性を作成します。エンティティは、リレーショナル データ
ベースにおける「テーブル」
、属性は「列」に相当するものです。これらは、
「Excel 用マスター デ
ータ サービス アドイン」ツール(以降、Excel 用 MDS アドインと記述します)を利用すると、
簡単に作成することができます(Excel 用 MDS アドイン ツールは SQL Server 2012 から提供
されたツールなので、SQL Server 2008 R2 を利用している場合は、ポータル サイトからエンテ
ィティと属性を作成することができます)
。
1.
エンティティを作成するには、Excel 2013 を起動して、エンティティの元となるデータを
シートへインポートしておきます(画面は、NorthwindJ データベースの「商品区分」テー
ブルを取り込んだ Sheet1 シート)。
NorthwindJ データベース
の「商品区分」テーブルを
取り込んだもの
2.
次に、商品区分のデータを全て選択して、
[マスター データ]タブから[エンティティの作成]
をクリックします。
2
1
3.
データを
全て選択
これにより、
[接続の管理]ダイアログが表示されるので、
[新規作成]ボタンをクリックして、
新しい接続を作成します。
2
3
4
1
[新しい接続の追加]ダイアログでは、[説明]へ任意の接続名(MDS など)、[MDS サー
バー アドレス]へポータル サイトへのアドレス(画面は http://matumo/MDS)を入力
して、[OK]ボタンをクリックします。
4.
次に、[接続]ボタンをクリックして、MDS サーバーへ接続します。
1
5.
[エンティティの作成]ダイアログが表示されたら、[モデル]で「商品モデル」、[バージョ
ン]で「VERSION_1」を選択します。
1
2
3
[新しいエンティティ名]には「商品区分」など任意のエンティティ名を入力して、[コード
(一意識別子を含む列)]で「区分コード」、[名前]で「区分名」を選択し、
[OK]ボタンを
クリックします。
6.
これで、エンティティが作成されて、次のように新しいシート(エンティティの名前と同じ名
前のシート)が追加されます。
新しいエンティティが
作成される
1
また、各列は、
「属性」として自動作成されています。
7.
次に、NorthwindJ データベースの「商品」テーブルを取り込んだシートから、新しいエン
ティティを作成します。
2
1
データを
全て選択
商品データを全て選択して、
[マスター データ]タブから[エンティティの作成]をクリック
します。
8.
[エンティティの作成]ダイアログが表示されたら、[モデル]で「商品モデル」、[バージョ
ン]で「VERSION_1」を選択します。
1
2
3
[新しいエンティティ名]には「商品」など任意のエンティティ名を入力して、[コード(一
意識別子を含む列)]で「商品コード」、[名前]で「商品名」を選択し、
[OK]ボタンをクリ
ックします。
9.
これで、
「商品」エンティティが作成されて、次のように新しいシートが追加されます。
新しいエンティティが
作成される
1
属性の設定
次に、属性を設定してみましょう。
10. ここでは、
「商品」エンティティの「区分コード」属性を選択して、
[属性のプロパティ]をク
リックします。
2
1
11. これにより、[属性のプロパティ]ページが表示されて、属性の設定を変更できるようになり
ます。
1
2
[属性の型]で「制約付き一覧(ドメイン ベース)」、[属性に次の値を設定]で「商品区分」
エンティティを選択して、[OK]ボタンをクリックします。
このように設定すると、「区分コード」属性を「商品区分」エンティティに関連付けることが
できます(リレーションシップを設定できます)
。
12. 関連付けを行うと、次のように「区分コード」属性にドロップダウン リストが表示されて、
商品区分エンティティの区分名が表示されるようになります。
1
データの編集とパブリッシュ
次に、データを編集してみましょう。データの編集は、Excel 用 MDS アドインまたはポータル サ
イトから行うことができます。
1.
ここでは、Excel 用 MDS アドインで任意のデータを編集してみましょう(画面は、商品コ
ード 3 の果汁 100% レモンの区分コードを 1:飲料 から 7:加工食品 へ変更)
。
2
1
データを変更すると、セルがオレンジ色に表示されます。これを MDS サーバーへ反映させ
るには、
[パブリッシュ]ボタンをクリックします。
2.
次のように[パブリッシュと注釈設定]ダイアログが表示されたら、任意の注釈(説明)を記
述(画面は 区分変更と記述)して、
[パブリッシュ]ボタンをクリックします。
1
2
以上でパブリッシュが完了です。完了後、編集したデータは、オレンジ色から通常の色へ変わ
っていることを確認できます。
エクスプローラーでのデータの確認
次に、ポータル サイトの「エクスプローラー」機能を利用して、エンティティ内のデータを確認
してみましょう。
3.
エクスプローラーを利用するには、まずは、画面左上のロゴをクリックして、ホーム ページ
に戻ります。
1
2
3
ホームページでは、
[モデル]で「商品モデル」、
[バージョン]で「VERSION_1」を選択し
て、
[エクスプローラー]をクリックします。
4.
なお、Silverlight をインストールしていない環境の場合には、次のように Silverlight の
インストールが促されるので、Silverlight をインストールしておきます。
5.
[エクスプローラー]ページのメニューが表示されたら、次のように[エクスプローラー]を
クリックします。
1
6.
続いて、
[エンティティ]メニューから[商品区分]エンティティをクリックします。
1
データの編集
も可能
商品区分エンティティ
のデータが表示されて
いることを確認
商品区分エンティティのデータが表示されることを確認できます。ここでは、右ペインを利用
して、データを編集することもできます。
7.
次に、[エンティティ]メニューから[商品]エンティティを選択して、商品エンティティの
データを確認します(もし、メニューが表示されない場合は、[エクスプローラー]をクリッ
クしてから、[エンティティ]メニューを開いてみてください)
。
商品エンティティ
のデータ
商品エンティティのデータが表示されて、Excel 用 MDS アドインで編集したデータ(商品
コード 3 の果汁 100% レモンの区分コードを 1:飲料 から 7:加工食品 へ変更)も確認す
ることができます。
トランザクションの確認と破棄
MDS では、マスター データに対して行われたトランザクション(変更の履歴)を確認することが
できます。また、そのトランザクションを破棄(ロールバック)することもできます。
1.
トランザクションの確認を行うには、ホームページへ戻って、次のように[バージョン管理]
をクリックします。
1
2.
次に、[トランザクション]をクリックすると、トランザクション(変更の履歴)を確認する
ことができます。
1
トランザクションの
履歴が表示される
以前の値が 1(飲料区分)で
新しい値が 7(加工食品区分)
であることを確認できる
[以前の値]列には「1」(飲料区分)、[新しい値]列には「7」(加工食品区分)と表示され
るトランザクションがあることを確認できます。
3.
記録されたトランザクションを破棄(ロールバック)するには、次のように破棄したいトラン
ザクションを選択して、[トランザクションを元に戻す]ボタンをクリックします。
1
2
破棄(ロールバック)
したい操作を選択
3
これにより、[Web ページからのメッセージ]ダイアログが表示されて、確認を促されるの
で、
[OK]ボタンをクリックします。
4.
トランザクションには、次のように、
[以前の値]が「7」
(加工食品区分)、
[新しい値]が「1」
(飲料区分)」となったデータが記録されて、元の区分へ戻っていることを確認できます。
以前の値が 7(加工食品区分)で
新しい値が 1(飲料区分)となり
元にもどっていることを確認できる
5.
データが元にもどったことを Excel 用 MDS アドインで確認するには、次のように[更新]
ボタンをクリックします。
1
2
サブスクリプション ビューの作成
MDS では、マスター データを、別システム(レポート ツールや BI ツールなど)から利用でき
るようにするための「サブスクリプション ビュー」機能が用意されています。
1.
サブスクリプション ビューを作成するには、ホーム ページへ戻って、次のように「統合管理」
をクリックします。
1
2.
次に、[ビューの作成]をクリックすると、「サブスクリプション ビュー」ページが表示され
ます。
2
1
「サブスクリプション ビュー」
ページが表示される
3
このページでは、
「+」(サブスクリプション ビューの追加)ボタンをクリックします。
3.
[サブスクリプション ビュー定義の作成]ページが表示されたら、[サブスクリプション ビ
ュー名]に任意の名前(画面は TestView1)を入力して、[モデル]で「商品モデル」、[バ
ージョン]で「VERSION_1」、[エンティティ]で「商品」、[形式]で「リーフ メンバー」
を選択します。
6
1
2
3
4
5
選択後、上部の[保存]ボタンをクリックすれば、サブスクリプション ビューの作成が完了
です。
4.
作成が完了すると、次のように表示されます。
作成されたサブスクリ
プション ビュー
5.
次に、作成したサブスクリプション ビューを Management Studio から確認してみましょ
う。オブジェクト エクスプローラーで MDS データベースの「ビュー」フォルダーを展開す
ると、TestView1 が作成されていることを確認できます。
また、SELECT ステートメントで TestView1 テーブルの中身(商品エンティティのデータ)
を参照できることも確認しておきましょう。
こ の よ う に 、 MDS を 利 用 す る と 、 マ ス タ ー デ ー タ 管 理 ( MDM : Master Data
Management)を実現することができます。SQL Server 2012 からは、データの品質を向
上させることができる DQS(データ品質サービス)機能も提供されていて、MDS には、こ
の DQS と連携する機能もあります。
MDS には、まだまだたくさんの機能があるので、オンライン ブックなどを参考に、ぜひ試
してみてください。
おわりに
最後までこの自習書を試された皆さま、いかがでしたでしょうか? SQL Server 2008 R2 および
SQL Server 2012 からは、多くの新機能が提供されていることを確認していただけたのではない
でしょうか。この自習書では、現場で役立つ新機能を厳選して、利用方法をステップ バイ ステッ
プ形式で解説してきましたが、実際の移行方法(旧バージョンの SQL Server からの移行/アッ
プグレード方法)については、SQL Server 2014 実践シリーズで、詳しく解説しているので、こ
ちらもぜひご覧いただければと思います。
SQL Server 2014 実践シリーズ
http://www.microsoft.com/ja-jp/sqlserver/2014/technology/self-learning.aspx#practical
-contents
また、SQL Server 2014 からの新機能(クラスター化列ストア インデックスやインメモリ OLTP、
SSD バッファ プール拡張など)については、本自習書シリーズの「SQL Server 2014 新機能
ダイジェスト」および「インメモリ OLTP 機能の概要」編で詳しく解説しているので、こちらも
ぜひご覧いただければと思います。
SQL Server 2014 自習書シリーズの URL
http://www.microsoft.com/ja-jp/sqlserver/2014/technology/self-learning.aspx
その他、SQL Server に関する全般的な利用方法については、SQL Server 2012 のときの自習書
シリーズになりますが、こちらも詳細手順を記載しているので、こちらもぜひご覧いただければと
思います。
SQL Server 2012 自習書シリーズの URL
http://www.microsoft.com/ja-jp/sqlserver/2012/technology/self-learning.aspx
執筆者プロフィール
有限会社エスキューエル・クオリティ(http://www.sqlquality.com/)
SQLQuality(エスキューエル・クオリティ)は、日本で唯一の SQL Server 専門の独立系コンサルティン
グ会社です。過去のバージョンから最新バージョンまでの SQL Server を知りつくし、多数の実績と豊富な
経験を持つ、OS や .NET にも詳しい SQL Server の専門家(キャリア 17 年以上)がすべての案件に対応
します。人気メニューの「パフォーマンス チューニング サービス」は、100%の成果を上げ、過去すべての
お客様環境で驚異的な性能向上を実現。チューニング スキルは世界トップレベルを自負、検索エンジンでは
(英語情報を含めて)ヒットしないノウハウを多数保持。ここ数年は BI/DWH システム構築支援のご依頼
が多く、支援だけでなく実際の構築も行う。
主なコンサルティング実績/構築
大手製造業の「CAD 端末の利用状況の見える化」システム構築
Oracle や CSV(Notes)、TSV ファイル、Excel からデータを抽出し、SQL Server 2012 上に DWH を構築
見える化レポートには Reporting Services を利用
大手映像制作会社の BI システム構築(会計/業務システムにおける予実管理/原価管理など)
従来 Excel で管理していたシートを Reporting Services のレポートへ完全移行。
Oracle や勘定奉行からデータを抽出して、SQL Server 上に DWH を構築
大手流通系の DWH/BI システム構築支援(POS データ/在庫データ分析/ABC 分析/ポイントカード分析)
大手アミューズメント企業の BI システム構築支援(人事システムにおける人材パフォーマンス管理)
Reporting Services による勤怠状況の見える化レポートの作成、PostgreSQL/人事システムからのデータ抽出
外資系医療メーカーの BI システム構築支援(Analysis Services と Excel による販売分析システム)
OLAP キューブによる売上および顧客データの多次元分析/自由分析(ユーザーによる自由操作が可能)
大手流通系の DWH システムのパフォーマンス チューニング
データ量 100 億件の DWH、総ステップ数2万越えのストアド プロシージャのパフォーマンス チューニング
ミッション クリティカルな金融システムでのトラブル シューティング/定期メンテナンス支援
SQL Server の下位バージョンからの移行/アップグレード支援(32 ビットから x64 への対応も含む)
複数台の SQL Server の Hyper-V 仮想環境への移行支援(サーバー統合支援)
ハードウェア リプレース時のハードウェア選定(最適なサーバー、ストレージの選定)、高可用性環境の構築
2 時間かかっていた日中バッチ実行時間を、わずか 5 分へ短縮(95.8% の性能向上)
Java 環境(Tomcat、Seasar2、S2Dao)の SQL Server パフォーマンス チューニング etc
コンサルティング時の作業例(パフォーマンス チューニングの場合)
アプリケーション コード(VB、C#、Java、ASP、VBScript、VBA)の解析/改修支援
ストアド プロシージャ/ユーザー定義関数/トリガー(Transact-SQL)の解析/改修支援
インデックス チューニング/SQL チューニング/ロック処理の見直し
現状のハードウェアで将来のアクセス増にどこまで耐えられるかを測定する高負荷テストの実施
IIS ログの解析/アプリケーション ログ(log4net/log4j)の解析
ボトルネック ハードウェアの発見/ボトルネック SQL の発見/ボトルネック アプリケーションの発見
SQL Server の構成オプション/データベース設定の分析/使用状況(CPU, メモリ, ディスク, Wait)解析
定期メンテナンス支援(インデックスの再構築/断片化解消のタイミングや断片化の事前防止策など)etc
松本美穂(まつもと・みほ)
有限会社エスキューエル・クオリティ 代表取締役 Microsoft MVP for SQL Server(2004 年 4 月~)
経産省認定データベース スペシャリスト/MCDBA/MCSD for .NET/MCITP Database Administrator
SQL Server の日本における最初のバージョンである「SQL Server 4.21a」から SQL Server に携わり、現在、SQL Server
を中心とするコンサルティングを行っている。得意分野はパフォーマンス チューニングと Reporting Services。著書の
『SQL Server 2000 でいってみよう』と『ASP.NET でいってみよう』
(いずれも翔泳社刊)
は、トップ セラー(前者は 28,500
部、後者は 16,500 部発行)。近刊に『SQL Server 2012 の教科書』(ソシム刊)がある。
松本崇博(まつもと・たかひろ)
有限会社エスキューエル・クオリティ 取締役 Microsoft MVP for SQL Server(2004 年 4 月~)
経産省認定データベース スペシャリスト/MCDBA/MCSD for .NET/MCITP Database Administrator
SQL Server の BI システムとパフォーマンス チューニングを得意とするコンサルタント。アプリケーション開発(ASP
/ASP.NET、C#、VB 6.0、Java、Access VBA など)やシステム管理者(IT Pro)経験もあり、SQL Server だけでなく、
アプリケーションや OS、Web サーバーを絡めた、総合的なコンサルティングが行えるのが強み。Analysis Services と
Excel による BI システムも得意とする。マイクロソフト認定トレーナー時代の 1998 年度には、Microsoft CPLS トレーナ
ー アワード(Trainer of the Year)を受賞。
Fly UP