先週 [Microsoft Books Online for SQL Server Code-Named "Denali" CTP1] がダウンロードできるようになりました。
このインストール方法がちょっと独特でしたので軽くまとめてみました。
今回、提供されたファイルで初めてオフラインで使用できるようになったのかと思ったのですが、これ以前からオフラインで利用できたんですね…。
その方法も合わせてまとめてみたいと思います。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
先週 [Microsoft Books Online for SQL Server Code-Named "Denali" CTP1] がダウンロードできるようになりました。
このインストール方法がちょっと独特でしたので軽くまとめてみました。
今回、提供されたファイルで初めてオフラインで使用できるようになったのかと思ったのですが、これ以前からオフラインで利用できたんですね…。
その方法も合わせてまとめてみたいと思います。
今回は Denali の AWE についてまとめていきたいと思います。
32bit の Denali でも AWE を設定することができます。 ![]()
DBCC MEMORYSTATUS で Memory Manager を確認すると AWE Allocated によるメモリ割り当てがされていることが確認できます。 ![]()
それでは、どれくらいのメモリが割り当てられるかを試してみたいと思います。
# /3GB スイッチは無効にしてあります。 ![]()
このグラフの情報は AWE を有効にしている状態で取得をしているのですが、メモリが 1.4GB 程度で頭打ちになっています。
AWE について SQL Server 2008 R2 の BOL で確認をしてみました。
awe enabled オプション
この機能は、Microsoft SQL Server の次のバージョンで削除されます。
新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションはできるだけ早く修正してください
SQL Server 2008 R2 の段階で、AWE は次バージョンで削除されることになっています。
# SQL Server 2008 ではこの記載はありませんでしたので、2008 R2 になって明記されたものになります。
SQL Server で実行されているクエリのトレースを取得できるツール、SQL Server Prolifer には [Deprecation] というイベント カテゴリが用意されており、このカテゴリに含まれるイベント クラスを取得すると実行されている SQL が次バージョンでサポートされるかを確認することができます。
Deprecation イベント カテゴリ
それでは、SQL Server 2008 R2 で [awe enabled] を有効にするクエリを実行してイベントを取得してみたいと思います。
[sp_configure] で [awe enabled] を設定しようとすると、[Deprecation Announcement] イベントが発生しているのが確認できます。
メッセージンは以下の内容が表示されています。
| sp_configure ‘awe enabled’ は、今後のバージョンの SQL Server では削除される予定です。 新しい開発作業ではこの機能の使用を避け、現在この機能を使用しているアプリケーションでは変更を検討してください。 |
SQL Server Plofiler からも、[awe enabled] に関しては削除対象となっていることが確認できます。
それでは、Denali で [awe enabled] を設定するとイベントが発生するかを確認してみたいと思います。
| sp_configure ‘awe enabled’ will be removed in a future version of SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use it. |
Denali でも 、[Deprecation Announcement] が発生しています。
sp_configure で awe enabled は設定ができているので、構文が使用できるかどうかで見るとこのイベントの発生で正常だと思います。
ただし、メモリが使えるかというと簡単に試したところ、通常のユーザーモードの空間内のメモリしか使えていないようですね…。
/3GB スイッチに関しては想定通りの動きとなり、2GB 以上のメモリ空間の利用が可能となります。
現在は CTP 版なので設定できているのかもしれませんが、SQL Server 2008 R2 の BOL に削除されていると記載されている以上、Denali で AWE が使えると思えるのは危険な気がしますね。
検証した感じでは、32bit の Denali のメモリ割り当ては以下のようになりそうです。![]()
ここまでの投稿で、メモリの情報を取得しながら AWE の動作を簡単に確認してきました。
次の投稿では、AWE 有効時のメモリの使用状況の取得についてまとめたいと思います。
Denali の HADR の構築はできましたので、今回はフェールオーバーについてまとめてみたいと思います。
HADR は WSFC が必須の構成となります。
HADR を構築するとクラスターグループとして Availability Group として設定したグループ名が作成されます。 ![]()
このクラスターグループにはリソースが一つ含まれています。
このリソースですが、[SQL Server Availability Group] というリソースで作成されています。 ![]()
リソースの所有者が [Primary] として設定されているサーバーになるようですね。
このグループですが、WSFC の管理コンソールからはグループを移動させることはできないようになっているようです。 ![]()
WSFC のグループは WSFC の管理コンソールからは切り替えることができません。
Primary サーバーを切り替える (フェールオーバーさせる) 場合は、SSMS から操作をする必要があります。
Primary サーバーの切り替えですが、現在 [Primary] サーバーとなっているサーバーの接続からは変更することができません。
となっている場合、DELALI-01 の接続では、サーバーの切り替えをするためのメニューは表示されません。
DENALI-02 に接続し、Secondary で右クリックをするとメニューが少し変わります。
![]()
SSMS で Secondary のサーバーに接続をして、Secondary のサーバーを右クリックすると [Force Failover] が表示されます。
[Force Failover] を使用することで Primary と Secondary を切り替えることができます。
CTP1 の Release Notes には以下の記載があります。
The SQL Server Code-Named “Denali” CTP1 release of "HADR" is a preview and does not support the following features:
Synchronous data movement (synchronous-commit availability mode).
Manual failover and automatic failover.
The only supported form is forced failover, which allows data loss and suspends the secondary databases.
Log compression.
Automatic page repair.
The ALTER AVAILABILITY GROUP Transact-SQL statement does not support changing the configuration of the availability group such as changing read-only access to an availability replica, adding or removing an availability database, and adding or removing a secondary availability replica. For information about what this Transact-SQL statement supports, see ALTER AVAILABILITY GROUP (Transact-SQL) in Books Online.
現状は マニュアル / 自動フェールオーバーは実装されていないようです。
そのため、Primary / Secondary を切り替えるためには強制フェールオーバーをする必要があります。
# Primary のサービスを停止しても Secondary には切り替わりません。
それでは、[Force Failover] を実行して Primary と Secondary を切り替えてみたいと思います。
DEHALI-02 に接続し、[HADR Group] → [Availability Replicas] を展開して、[DENALI-02] を右クリックし、[Force Failover] をクリックします。
# Secondary の接続でないと [Force Failover] が表示されません。
H
ADR の強制フェールオーバーは以上で完了です。
強制フェールオーバーを実施すると以下の状態となります。
強制フェールオーバー前は [Primary] であった、[DENALI-01] が [Secondary] になっているのが確認できます。
強制フェールオーバーを実施した影響だと思うのですが、[Synchronization State] が [Synchronized] から [Not Synchronizing] に変わっています。
データベースの状態も [Online] から [Suspended] に変わっています。
強制フェールオーバーを実施した場合は、自動で [Online] にはならないため手動で HADR による同期を再開する必要があります。
同期を再開するためには、[Secondary] に接続をして [Resume Data Movement] を実行する必要があります。 ![]()
[OK] をクリックして、HADR によるデータ同期を再開します。 ![]()
自動フェールオーバーや自動ページ修復が実装されるとミラーリングと変わらない利用が出来そうなので期待大ですね。
次の CTP で検証できるようになっているとうれしいですね~。
Denali では高可用性の構成として、
のほかに、HADR (high-availability and disaster recovery) という構成が追加されています。
"HADR" Overview (SQL Server)
SQL Server Code-Named "Denali" CTP1 Release Notes の[3.7 High Availability and Disaster Recovery ("HADR")] にも情報が記載されています。
HADR は共有ディスクを使用しないで SQL Server の高可用性環境を作成できる構成になります。 ![]()
特徴としてはプライマリとセカンダリのサーバーだけで同期をとることができ、サーバー間のデータ同期にはミラーリングと同様にエンドポイントが使用されている点になります。
パッと見はレプリケーションと変わらなそうですが、HADR はデータベース全体を同期の対象とすることが可能です。
# レプリケーションは同期をとるテーブルを選択する必要があったはずです。
レプリケーションは SQL Server Agent は使用してデータの同期が行われますが HADR では SQL Server Agent は不要です。
また、セカンダリデータベースは常に読み取りデータベースとして使用することができるように設定が可能です。
クライアントからの接続はミラーリングと同じような設定ができるようなのですがここはまだ検証ができていません。
"HADR" Overview (SQL Server) に[Client Connections] にこのあたりの記載がされています。
Connecting Clients to a Database Mirroring Session (SQL Server) へのリンクがあるので、ミラーリングと同じように Server / Failover_Partner を使用して自動的なフェールオーバーはできそうなのですが。
CTP1 では
This CTP supports only a single, asynchronous secondary replica.
となっているため、シングルのセカンダリ環境となります。
# GUI 上は複数サーバー設定できそうなのですが、具体的に何サーバー設定できるかが記載されているドキュメントが見つかっていないのですよね…。
HADR はクラスタリングの技術が使用されているため、WSFC が必須となります。
HADR で必要となる要件に関してはこちらの技術情報に記載がされています。
"HADR" Prerequisites and Restrictions
前提となるデータベースの設定条件に関してもこちらの技術情報に記載がされています。
ただし、SQL Server のインスタンスに関してはクラスタインスタンスとする必要はなくローカルインスタンス間でデータの同期を行うことが可能です。
この HADR の構築方法をまとめてみたいと思います。
今回の環境は前回の投稿で作成したクラスタ環境に、ローカルの既定のインスタンスを作成した環境で実施しています。
また、SQL Server のサービスアカウントはドメインユーザーを指定しています。
両サーバーでローカルアカウントを使用して、ミラーアカウントを作成、エンドポイントで証明書を使用する等を行えばドメインユーザーでなくてもデータ連携ができるかもしれませんが今回は簡単な構築の検証のためドメインユーザーを使用しています。
# WSFC なのでドメイン参加は必須ですのでドメインユーザーを使用するのはそれほど敷居が高くないと思います。
最初の作業として HADR を使用するインスタンスで、HADR を有効化する必要があります。
HADR の有効化は [SQL Server Configuration Manager] から行います。
Configuration Manager で対象のインスタンスの SQL Server サービスのプロパティを開くと、[SQL HADR] というタブが表示されます。
このタブの [Enable SQL HADR service] を有効にすることで、対象のインスタンスで HADR を使用することが可能になります。
[Enable SQL HADR service] を両サーバーのインスタンスで有効にして、サービスを再起動します。 ![]()
TCP/IP 接続の有効化
Denali CTP1 の初期状態では、[Shared Memory] のみが有効になった状態になっています。
HADR では TCP/IP でインスタンス間を接続する必要がありますので、TCP/IP を有効にしておきます。
# データの同期はエンドポイントを介して行われますが HADR 設定時に TCP/IP でインスタンスに接続ができる必要があります。
設定を有効にするため、SQL Server のサービスを再起動します。
HADR はインスタンス間の接続と、エンドポイントの接続ができる必要がありますので、必要となるポートを許可するファイアウォールのルールを設定します。
今回は既定のインスタンスを使用していますので、インスタンス間の接続は [TCP 1433] が必要になります。
エンドポイントでは既定ではミラーリングと同じ [TCP 5022] が使用されますので、この 2 種類のポートを許可するルールを作成します。
| netsh advfirewall firewall add rule name="HADR" dir=in protocol=TCP localport=1433,5022 action=allow |
HADR の設定は SQL Server Management Studio (SSMS) から実施します。
今回は、HADR_TEST というデータベースを使用て HADR を設定してみたいと思います。
# 復旧モデルは [完全] に設定しておく必要があります。 ![]()
最初の作業としては [Availability Group] を作成します。
HADR はこのグループに属しているデータベースの冗長化を行います。
バックアップを取得していると HADR の対象とすることができます。
対象のデータベースを選択して、[Next] をクリックします。
以上で HADR の設定は完了です。
今回は SSMS で GUI を使って実行しましたが、クエリベースで実行する場合は以下の技術情報が参考になります。
Example: Setting Up an Availability Group Using Windows Authentication (Transact-SQL)
[Availability Groups] の下に設定が追加されていることが確認できます。
設定ついては [Object Explorer Details] からも確認をすることができます。
![]()
HADR の設定は特に難しい箇所はなく設定が出来ると思います。
現状は非同期の更新となっていますが、技術情報で以下のように記載されているように、かなり短い間隔で同期はされているように思えます。
Asynchronous-commit mode enables the primary replica to run with minimum transaction latency
細かな使い方に関しては別の投稿でまとめていきたいと思います。
Denali で 2 ノードクラスターを構築する手順をまとめてみたいと思います。
WSFC は構築をしてあり、MSDTC のリソースは作成済みです。 ![]()
■1 ノード目のインストール
事前準備は終わっていますのでセットアップを起動してクラスターのインストールを行います。
Denali のクラスターのインストールは一台ずつ実施をします。
まずは最初のノードのインストールから。
私がインストールする場合、インストール時にログオンしているドメインアカウントには最低限の権限 (Domain Users) しか与えていないので、コンピューターアカウントの作成に関してのチェックで警告となります。
インストール時にログオンしているユーザーにはコンピューターアカウント作成のための権限は委任していませんが、初期状態の 10 台までの作成で対応ができますので、警告は無視ししています。
クラスターの検証レポートが以下の状態であれば、SQL Server のインストール検証では警告は発生しません。
また、SQL Server で使用するディスクに関してもインストーラーを実行するノードに移動をしておきます。
[使用可能記憶域] に属している状態ではインストールには使えませんので注意が必要です。
インストーラーを実行しているノードで使用可能な共有ディスクがない場合はエラーになります。
![]()
これで 1 ノード目のインストールは完了です。
続いて 2 ノード目のインストールを行います。
以上でクラスターのインストールは完了です。
クラスターインスタンスのインストールは今までのバージョンと変わらないですね。
Denali では高可用性構成として [HADR] という構成があります。
この構成に関しては次の投稿でまとめてみたいと思います。
本日 [Microsoft SQL Server code-named ‘Denali’ CTP1] の提供が開始されました。
Code Name Denali ですが、次期 SQL Server の CTP 版になります。
# SQL Server 2011 になるのかなと。 ![]()
SSMS が VIsutal Studio 2010 ベース (.NET Framework 4.0 もインストールされます) に変更されています。 ![]()
SSMS が刷新され、レポートが Word 形式でもエクスポートできるようになりました。
PDF のレポートに関してもフォントが埋め込まれるようになったみたいですね。 ![]()
Availability Groups という機能が増えているようなのですが、これは WSFC の必要があるようですね。
日本語の照合順序に関しては、[Japanese_XJIS_100] が最新のようですね。 ![]()
まだ、ヘルプが見れないので新規にどのような機能が入ったのかは調べられていないのですがクラスタに関しては今週中に構築してみたいと思います。
本日 [Microsoft SQL Server code-named ‘Denali’ CTP1] の提供が開始されました。
Code Name Denali ですが、次期 SQL Server の CTP 版になります。
# SQL Server 2011 になるのかなと。 ![]()
SSMS が VIsutal Studio 2010 ベース (.NET Framework 4.0 もインストールされます) に変更されています。 ![]()
SSMS が刷新され、レポートが Word 形式でもエクスポートできるようになりました。
PDF のレポートに関してもフォントが埋め込まれるようになったみたいですね。 ![]()
Availability Groups という機能が増えているようなのですが、これは WSFC の必要があるようですね。
日本語の照合順序に関しては、[Japanese_XJIS_100] が最新のようですね。 ![]()
まだ、ヘルプが見れないので新規にどのような機能が入ったのかは調べられていないのですがクラスタに関しては今週中に構築してみたいと思います。