*SQL Server 2000でAWEを有効にする方法 [#ca329794]
*AWEについて [#ba2dbf8f]
#contents

**AWE(Address Windowing Extensions)とは [#if561732]
2Gbytes(もしくは3Gbytes)のユーザーメモリ空間だけでは扱えないような巨大な物理メモリを直接利用するためのAPI。~
AWEは、巨大な物理メモリの一部をユーザーメモリ空間中のウィンドウにマッピングさせて利用する機能であり(MS-DOS当時のEMSメモリなどと同じ考え方)、NT 4.0 サービスパック3以降で利用可能である。~
''PAE''と組み合わせることにより、Windows 2000 Advanced Serverでは、より巨大なアプリケーションを動作させやすくなる。

**AWE が使用できる物理メモリ [#xe132a51]
-Windows Server 2003 Standard Edition では、では、最大 4 GB の物理メモリがサポートされます。
-Windows Server 2003 Enterprise Edition では、最大 32 GB の物理メモリがサポートされます。
-Windows Server 2003 Datacenter Edition では、最大 64 GB の物理メモリがサポートされます。

**SQL Server 2000でAWEを利用するための前提条件 [#j5b52fa5]
-AWE は 64bitOSには不要であり、使用できません
-32bitOSで4GB以上のメモリを使用したい場合はPAEが有効になっている必要があります
-SQL Server 2000がEnterprise Edition もしくは Developer Editionである事
-''lock pages in memory'' 特権が割り当てられているアカウントでデータベースエンジンが実行されている
-SQL Server 2000 SP4が適用されている場合は、#474343のBUG FIXを適用する
--詳細は後述

**AWEを有効にする前に考えなければならない事 [#zabaa302]
Windows 2000 および Windows Server 2003 ではどちらも、AWE メモリをページ ファイルにスワップ アウトすることはできません。~
したがって、コンピュータ上で使用される他のすべてのアプリケーションの起動後に、使用可能なメモリ量を特定することによって、''SQL Server のインスタンスに安全に割り当てることができるメモリ量を判断する必要があります。''

システム モニタの SQL Server の Total Server Memory (KB) カウンタを使用して、AWE モードで実行されている SQL Server のインスタンスに割り当てられているメモリ量を特定します。max server memory オプションを構成するときは、''他のアプリケーションや Windows 2000 および Windows Server 2003 に必要なメモリをある程度残すようにします。''

**lock pages in memory [#s45d6409]
*SQL Server 2000でAWEを有効にする手順 [#ca329794]
**lock pages in memoryを有効にする [#s45d6409]
***lock pages in memoryとは? [#z3592f76]
プロセスを使用して物理メモリにデータを保持できるアカウントを指定し、ディスク上の仮想メモリへのデータのページングを防止します。~
このオプションは、既定で''無効''になっています。

***lock pages in memoryオプションを有効にするには [#u3aa1021]
&color(red){''※ 重要''};~
&color(red){''32bitOSではAWEを使用しないでこのオプションを有効にすると、システムのパフォーマンスが大きく低下する可能性があります。''};~
&color(red){''64bitOSでは、この設定は必要はありません。''};~

-以下に手順を示します。

+[スタート] メニューの [ファイル名を指定して実行] をクリックします。[名前] ボックスに「gpedit.msc」と入力します。
+[グループ ポリシー] ダイアログ ボックスが開きます。
+[グループ ポリシー] コンソールで [コンピュータの構成] を展開し、次に [Windows の設定] を展開します。
+[セキュリティの設定] を展開し、[ローカル ポリシー] を展開します。
+[ユーザー権利の割り当て] フォルダをクリックします。
+ポリシーが詳細ペインに表示されます。
+詳細ペインで、[メモリ内のページのロック] をダブルクリックします。
+[ローカル セキュリティ ポリシーの設定] ダイアログ ボックスで、[追加] をクリックします。
+[ユーザーまたはグループの選択] ダイアログ ボックスで、sqlservr.exe の実行権限のあるアカウントを追加します。

**SQL Server 2000 SP4 でAWEを使用する際の注意 [#ya4613c2]
**SQL Server 2000 SP4 でAWEを使用する際にはパッチを当てる [#ya4613c2]
-以下の条件を満たすとき、SQL Serverではコンピュータの物理メモリの 50% までしか使用できなくなります。
-- x86 または x64 ベースのコンピュータ
-- 32bit版の SQL Server 2000 Service Pack 4である
|ビルド番号|サービスパック|h
|8.00.194 または 2000.80.194.0|初期状態|
|8.00.384 または 2000.80.384.0|SP1|
|8.00.534 または 2000.80.534.0|SP2|
|8.00.760.03 または 2000.80.760.03|SP3|
|8.00.760.09 または 2000.80.760.09|SP3a|
|8.00.2039たは 2000.80.2039|SP4|
|8.00.2039より大きい番号|SP4以降の各パッチを当てている|

-- 2GBを超える RAM が搭載されている
-- AWEを使用し''max server memory (MB)'' が物理メモリの50%以上である

全ての条件を満たしている場合は、[[[FIX] 32 ビット版の SQL Server 2000 SP4 を実行するコンピュータで AWE を有効にすると使用できないメモリ領域がある>http://support.microsoft.com/kb/899761/ja]]のFixパッチを当てる必要があります。
-全ての条件を満たしている場合は、[[[FIX] 32 ビット版の SQL Server 2000 SP4 を実行するコンピュータで AWE を有効にすると使用できないメモリ領域がある>http://support.microsoft.com/kb/899761/ja]]のFixパッチを当てる必要があります。
- 上記パッチを適用すると、ビルド番号は8.00.2040 または 2000.80.2040となります。
 
**SQL Server 2000でAWEオプションを有効にする手順 [#o78b9907]
**SQL Server 2000でAWEオプションを有効にする [#o78b9907]
-AWE を有効にして max server memory オプションに 6 GB の制限を設定するとした手順です
--メモリの値は適切な値に変更して下さい

+以下のクエリを実行する
 sp_configure 'show advanced options', 1
 RECONFIGURE
 GO
 sp_configure 'awe enabled', 1
 RECONFIGURE
 GO
+SQL Server のサービスを再起動する
+以下のクエリを実行する
 sp_configure 'min server memory', 6144
 RECONFIGURE
 GO
 sp_configure 'max server memory', 6144
 RECONFIGURE
 GO
--メモリの値を適切な値に変更して下さい
+SQL Serverを再起動して下さい
+''Address Windowing Extensions が有効です。'' というメッセージが、SQL Server のエラー ログに書き込まれますので確認して下さい
+''Address Windowing Extensions が有効です。'' というメッセージが、SQL Server のログに書き込まれますので確認して下さい~
--''Address Windowing Extensions enabled.''という英語表記かもしれません
--イベントログには残っていないので注意する事。必ず、EnterpriseManagerのSQL ログから確認する

**AWEの確認で注意する事 [#r51948de]
**AWEの確認 [#r51948de]
タスク マネージャでは、AWE について正確なメモリ使用状況は提供されません。~
したがって、タスクマネージャのsqlservr.exe に対するメモリ量は正しくありません。~
SQL Server の正確なメモリ使用量を取得するには、

+システム モニタを通じてアクティブ化される Total Server Memory (KB) パフォーマンス カウンタを使用する
+sysperfinfo のTotalServerMemory等を参照する

と言った形で確認する必要があります。

**参考リンク [#ba5a65c0]
-[[SQL Server での AWE メモリの有効化>http://msdn.microsoft.com/ja-jp/library/ms190673.aspx]]
-[[awe enabled オプション>http://msdn.microsoft.com/ja-jp/library/ms190731.aspx]]
-[[2 GB を超える物理メモリを使用できるように SQL Server を構成する方法>http://support.microsoft.com/default.aspx?scid=kb;ja;JP274750]]
-[[Lock Pages in Memory オプションを有効にする方法 (Windows)>http://msdn.microsoft.com/ja-jp/library/ms190730.aspx]]
-[[[FIX] 32 ビット版の SQL Server 2000 SP4 を実行するコンピュータで AWE を有効にすると使用できないメモリ領域がある>http://support.microsoft.com/kb/899761/ja]]
-[[[SQL Server 2000] 大容量メモリを使うには?>http://www.swk623.com/archives/2006/01/sql-server-2000.html]]