DBCC IND を使用したページの連続性の確認
ここ数日は SQL Server の基礎から勉強しなおそうと思い、インデックスの再構築 / 再構成について調べていました。
データの更新を行っているとデータページの断片化が発生し、断片化解消のためにインデックスの再構築 (REBUILD)、
再構成 (REORGANIZE) が必要となります。
ページの連続性が確認できないかなと思い、いろいろと本を眺めていたところ、[DBCC IND] があったなと思い、
少し試してみました。
# SQL Server の投稿に関しては SQL Server 2008 で検証をしていきたいと思います。
まずはテスト用として以下のテーブルを作成しました。
CREATE TABLE [dbo].[Tbl1]( |
GUID と NCHAR で構成された単純なテーブルです。
このテーブルに以下の SQL でデータを挿入して、インデックスを再構築して断片化を解消した状態にします。
— テーブルにデータを挿入 — 主キーが GUID のため、データ挿入後は断片化が発生しているためクラスタ化インデックスを再構築 |
?
この状態で DBCC IND を実行して、ページの連続性を確認してみました。
— DBCC IND の実行結果を格納するテーブル変数の定義 — テーブル変数に DBCC IND の実行結果を格納 — DBCC IND の結果から必要な列を取得 |
?
以下の実行結果が取得できます。
– 結果 1 –
No | FILEName | PagePID | ObjectName | name | PageType | IndexLevel | NextPagePID | PrevPagePID |
1 | WORK | 3328 | Tbl1 | PK_Tbl1 | 1 | 0 | 3336 | 0 |
2 | WORK | 3336 | Tbl1 | PK_Tbl1 | 1 | 0 | 3337 | 3328 |
3 | WORK | 3337 | Tbl1 | PK_Tbl1 | 1 | 0 | 3338 | 3336 |
4 | WORK | 3338 | Tbl1 | PK_Tbl1 | 1 | 0 | 3339 | 3337 |
5 | WORK | 3339 | Tbl1 | PK_Tbl1 | 1 | 0 | 3340 | 3338 |
6 | WORK | 3340 | Tbl1 | PK_Tbl1 | 1 | 0 | 3341 | 3339 |
7 | WORK | 3341 | Tbl1 | PK_Tbl1 | 1 | 0 | 3342 | 3340 |
8 | WORK | 3342 | Tbl1 | PK_Tbl1 | 1 | 0 | 3343 | 3341 |
9 | WORK | 3343 | Tbl1 | PK_Tbl1 | 1 | 0 | 3344 | 3342 |
10 | WORK | 3344 | Tbl1 | PK_Tbl1 | 1 | 0 | 3345 | 3343 |
11 | WORK | 3345 | Tbl1 | PK_Tbl1 | 1 | 0 | 3346 | 3344 |
12 | WORK | 3346 | Tbl1 | PK_Tbl1 | 1 | 0 | 0 | 3345 |
?
ここで確認したい内容が [NextPagePID] と [PrepPagePID] です。
この値が対象のページに対しての前後のページ ID となります。
クラスタ化インデックスの再構築後の状態を取得していますので、データの連続性が保たれています。
この状態でクラスタ化インデックスを更新して断片化を発生させます。
UPDATE [dbo].[Tbl1] SET [Col1] = NEWID() |
再度、DBCC IND を実行してページの情報を取得します。
– 結果 2 –
No | FILEName | PagePID | ObjectName | name | PageType | IndexLevel | NextPagePID | PrevPagePID |
1 | WORK | 3328 | Tbl1 | PK_Tbl1 | 1 | 0 | 3330 | 0 |
2 | WORK | 3329 | Tbl1 | PK_Tbl1 | 1 | 0 | 3332 | 3331 |
3 | WORK | 3330 | Tbl1 | PK_Tbl1 | 1 | 0 | 3331 | 3328 |
4 | WORK | 3331 | Tbl1 | PK_Tbl1 | 1 | 0 | 3329 | 3330 |
5 | WORK | 3332 | Tbl1 | PK_Tbl1 | 1 | 0 | 3336 | 3329 |
6 | WORK | 3333 | Tbl1 | PK_Tbl1 | 1 | 0 | 3337 | 3336 |
7 | WORK | 3334 | Tbl1 | PK_Tbl1 | 1 | 0 | 3335 | 3337 |
8 | WORK | 3335 | Tbl1 | PK_Tbl1 | 1 | 0 | 3338 | 3334 |
9 | WORK | 3336 | Tbl1 | PK_Tbl1 | 1 | 0 | 3333 | 3332 |
10 | WORK | 3337 | Tbl1 | PK_Tbl1 | 1 | 0 | 3334 | 3333 |
11 | WORK | 3338 | Tbl1 | PK_Tbl1 | 1 | 0 | 3347 | 3335 |
12 | WORK | 3339 | Tbl1 | PK_Tbl1 | 1 | 0 | 3441 | 3347 |
13 | WORK | 3340 | Tbl1 | PK_Tbl1 | 1 | 0 | 3443 | 3442 |
14 | WORK | 3341 | Tbl1 | PK_Tbl1 | 1 | 0 | 3444 | 3443 |
15 | WORK | 3342 | Tbl1 | PK_Tbl1 | 1 | 0 | 3445 | 3444 |
16 | WORK | 3343 | Tbl1 | PK_Tbl1 | 1 | 0 | 3446 | 3445 |
17 | WORK | 3344 | Tbl1 | PK_Tbl1 | 1 | 0 | 3456 | 3447 |
18 | WORK | 3345 | Tbl1 | PK_Tbl1 | 1 | 0 | 3457 | 3348 |
19 | WORK | 3346 | Tbl1 | PK_Tbl1 | 1 | 0 | 0 | 3458 |
20 | WORK | 3347 | Tbl1 | PK_Tbl1 | 1 | 0 | 3339 | 3338 |
21 | WORK | 3348 | Tbl1 | PK_Tbl1 | 1 | 0 | 3345 | 3456 |
22 | WORK | 3440 | Tbl1 | PK_Tbl1 | 1 | 0 | 3442 | 3441 |
23 | WORK | 3441 | Tbl1 | PK_Tbl1 | 1 | 0 | 3440 | 3339 |
24 | WORK | 3442 | Tbl1 | PK_Tbl1 | 1 | 0 | 3340 | 3440 |
25 | WORK | 3443 | Tbl1 | PK_Tbl1 | 1 | 0 | 3341 | 3340 |
26 | WORK | 3444 | Tbl1 | PK_Tbl1 | 1 | 0 | 3342 | 3341 |
27 | WORK | 3445 | Tbl1 | PK_Tbl1 | 1 | 0 | 3343 | 3342 |
28 | WORK | 3446 | Tbl1 | PK_Tbl1 | 1 | 0 | 3447 | 3343 |
29 | WORK | 3447 | Tbl1 | PK_Tbl1 | 1 | 0 | 3344 | 3446 |
30 | WORK | 3456 | Tbl1 | PK_Tbl1 | 1 | 0 | 3348 | 3344 |
31 | WORK | 3457 | Tbl1 | PK_Tbl1 | 1 | 0 | 3459 | 3345 |
32 | WORK | 3458 | Tbl1 | PK_Tbl1 | 1 | 0 | 3346 | 3459 |
33 | WORK | 3459 | Tbl1 | PK_Tbl1 | 1 | 0 | 3458 | 3457 |
断片化の発生により、ページ数が倍以上に増えています。
PagePID 3338 のレコードを見てみると、次のページが [3347] となっています。
他にも前後のページが連続していないレコードがちらほらと見受けられます。
この状態が断片化が発生している状態ですね。
ALTER INDEX ~ REBUILD を実行して、ページを確認してみます。
– 結果 3 –
No | FILEName | PagePID | ObjectName | name | PageType | IndexLevel | NextPagePID | PrevPagePID |
1 | WORK | 3464 | Tbl1 | PK_Tbl1 | 1 | 0 | 3472 | 0 |
2 | WORK | 3472 | Tbl1 | PK_Tbl1 | 1 | 0 | 3473 | 3464 |
3 | WORK | 3473 | Tbl1 | PK_Tbl1 | 1 | 0 | 3474 | 3472 |
4 | WORK | 3474 | Tbl1 | PK_Tbl1 | 1 | 0 | 3475 | 3473 |
5 | WORK | 3475 | Tbl1 | PK_Tbl1 | 1 | 0 | 3476 | 3474 |
6 | WORK | 3476 | Tbl1 | PK_Tbl1 | 1 | 0 | 3477 | 3475 |
7 | WORK | 3477 | Tbl1 | PK_Tbl1 | 1 | 0 | 3478 | 3476 |
8 | WORK | 3478 | Tbl1 | PK_Tbl1 | 1 | 0 | 3479 | 3477 |
9 | WORK | 3479 | Tbl1 | PK_Tbl1 | 1 | 0 | 3480 | 3478 |
10 | WORK | 3480 | Tbl1 | PK_Tbl1 | 1 | 0 | 3481 | 3479 |
11 | WORK | 3481 | Tbl1 | PK_Tbl1 | 1 | 0 | 3482 | 3480 |
12 | WORK | 3482 | Tbl1 | PK_Tbl1 | 1 | 0 | 0 | 3481 |
結果 1 と同じレコード数となり、ページ番号も連続しています。
断片化が解消されているのがページ数とページの連続性から確認ができますね。
DBCC IND を使用すると、インデックスの再構築と再構成の動作の違いを確認することも可能です。
こちらについては次回投稿したいと思います。
# 結果 2 と結果 3 ではPagePID が変わっているのですが、これがインデックスの再構築と再構成の違いでもあります。
tempdb の自動拡張と再起動後の初期サイズについて
SQL Server のデータベースは自動拡張設定を使用することで、データベースの割り当て領域が不足した際に、
自動的に拡張するように設定することができます。
SQL Server のソート等で使用される tempdb にもこの設定は適用することが可能です。
tempdb の領域が不足するとソート時などに以下のエラーが発生します。
メッセージ 1105、レベル 17、状態 2、行 1 |
# tempdb にはソートの一時結果が保存されますので、これはメモリ上でソートができる場合でも保存されますので、
メモリが足りていても tempdb が足りていないとソートに失敗します。
保険のために自動拡張を有効にして領域不足を解消するのは有効だと思います。
ただし、tempdb はサービスが再起動するタイミングで再作成されています。
自動拡張がされていても、サービスが再起動されると、明示的に設定をしていたサイズで再作成され、
自動拡張後のサイズはクリアされてしまいます。
[自動拡張前の tempdb のサイズ]
現在は 8.5MB 割り当てられています。
この状態で 600MB 程度のデータが入っているテーブルをソートしてみます。
[自動拡張後の tempdb のサイズ]
671MB まで拡張されました。
今の設定では 10% 単位で拡張がされるようになっています。
自動拡張のイベントを確認してみると、データファイルの自動拡張イベントが大量に出力されています。
今回の自動拡張イベントの処理時間の合計だけで、[34,939 ミリ秒] かかっています。
自動拡張の発生で 30 秒。処理時間としてはもったいないですね。
# 瞬時初期化ありの状態でこの秒数です。
今回はクエリエディタから実行しているのでタイムアウトしていませんが、プログラムから実行した場合は、
クエリタイムアウトの秒数に引っ掛かりエラーとなる可能性も。
この状態で、SQL Server のサービスを再起動してみます。
[再起動後の tempdb のサイズ]
再起動後は初期サイズの 8.5MB になってしまっています。
これは、ユーザーデータベースの場合は自動拡張が発生すると、初期サイズが変更されるのですが、tempdb に関しては
自動拡張が発生しても初期サイズが変更されないためです。
自動拡張後にデータベースのプロパティを確認してみると、600MB 超のサイズが初期設定にはなっておらず、
明示的に設定したサイズとなっています。?
サーバーの定期メンテナンス等で SQL Server を再起動する前に、tempdb の現在のサイズを確認して、
初期サイズの見直しが必要かの判断は重要かな~と思います。
SQL Server の専用管理者接続について
前回の投稿でシステムテーブルの更新には、専用管理者接続 (Dedicated Administrator Connection : DAC) を
使用すると書きました。
DAC は SQL Server 2005 からの機能で、SQL Server の応答が無くなった時に、トラブルシューティング等を
するために使用します。
デフォルトでは SQL Server をインストールしているサーバー (127.0.0.1) からのみ接続ができるようになっています。
以下の SQL を実行することで、リモートからも DAC による接続が可能となります。
sp_configure ‘remote admin connections’, 0 |
?
DAC ですがクラスタ環境の場合、ローカルの接続でもリモート DAC が有効になっていないと接続することができません。
このことは BOL にも記載されています。
クラスタ構成では、DAC は既定でオフになります。ユーザーは、sp_configure の remote admin connection オプションを実行すると、DAC リスナを有効にしてリモート接続にアクセスできます。 SQL Server が応答せず、DAC リスナが有効になっていない場合は、DAC で接続するために SQL Server を再起動する必要が生じる場合があります。 この理由から、クラスタ システムでは remote admin connections 構成オプションを有効にすることをお勧めします。 |
?
DAC の接続ですが、SQL Server Browser サービスが起動しているかによって接続方法が変わってきます。
[SQL Server Browser サービスが起動している場合]
こちらは前回の投稿で記載した接続方法になります。
接続先のサーバーとして、[ADMIN:<サーバー名><インスタンス名>] を指定することで接続ができます。
[SQL Server Browser サービスが起動していない場合 ]
SQL Server Browser サービスが起動していない状態で [ADMIN:~] で接続をすると、以下のエラーとなります。
ADMIN: での接続は DAC で使用しているポートを SQL Server Browser サービスに問い合わせています。
# DAC のポートは動的ポートのため、起動毎にポートが変更されます。
サービスが起動していないとポートがわからないため接続することができません。
DAC に割り当てられているポートは [ERRORLOG] ファイルに出力されています。
# ERRORLOG は SQL Server のインスタンスのインストールディレクトリの [Log] ディレクトリに出力されています。
このファイルをテキストエディタで開くと以下のような出力があります。
2009-11-05 23:02:19.60 サーバー??????? Dedicated admin connection support was established for listening remotely on port 50743. |
この行に DAC のポート番号が出力されています。
今回の場合は [50743] となっています。
ローカルから接続する場合、サーバー名の指定は [127.0.0.1,<ポート番号>] になります。
# 対象インスタンスの DAC のポートを直接指定するため、インスタンス名は不要です。
リモートから接続する場合は、[<サーバー>,<ポート番号>] になります。
DAC を使用して何か障害を解決したということは今のところないのですが、接続方法は知っておくと
障害発生時に便利かと。
SQL Server 2005 以降でシステムテーブルを直接更新する方法
このところ SQL Server をインストール以外触っておらず、データベース管理者としてのスキルが右肩下がりです…。
このままでは SQL Server のデータベース管理者としてお先真っ暗となってしまいますので、小さなことでもコツコツと
投稿していきたいと思います。
思い立った初回は SQL Server 2005 以降でシステムテーブルを直接更新する方法を投稿したいと思います。
SQL Server 2000 までは sp_configure で [allow updates オプション] を設定することでシステムテーブルを
直接更新することが可能でした。
SQL Server 2005 以降の Books Online では allow update オプションの説明は以下のように記載されています。
# 今回は SQL Server 2008 で検証をしていますが、2005 でも同様の動作となります。
このオプションは sp_configure ストアド プロシージャにまだ含まれていますが、 allow updates オプションを変更すると、RECONFIGURE ステートメントが失敗します。 |
?
実際に SQL Server 2008 で? allow updates を設定すると以下の実行結果となります。
sp_configure ‘allow updates’, 1 [実行結果] 構成オプション ‘allow updates’ が 0 から 1 に変更されました。RECONFIGURE ステートメントを実行してインストールしてください。 |
?
RECONFIGURE をするとエラーとなります。
RECONFIGURE WITH OVERRIDE することで設定ができます。
この状態で、sysdatabases のようなシステムテーブルに更新をかけると以下のようなエラーとなります。
# SQL Server 2005 以降では sysdatabases は下位互換のシステムビューで実体は master.sys.sysdbreg だったりしますが。
update sys.sysdatabases set status = status|32768 where dbid = 5
[実行結果] メッセージ 259、レベル 16、状態 1、行 1 |
?
SQL Server 2005 以降でシステムテーブルを更新するには以下の手順を実行して SQL Server に接続する必要があります。
- SQL Server をシングルユーザーモードで起動
- 専用管理者接続 (DAC) で接続
[シングルユーザーモードで起動する方法]
シングルユーザーモードで起動する前に、SQL Server 関連のサービスをすべて停止しておきます。
シングルユーザーモードはその名の通り、一人しか接続ができないモードですので SQL Server Agent や、
SSRS / SSIS / SSAS が起動していると、それらのサービスが SQL Server に接続してしまい、データベースエンジンクエリで
接続ができなくなってしまいます。
シングルユーザーモードで起動した後に、接続をしようとして エラー 18461 が発生する場合は、SQL Server 以外の
関連サービスを停止して確認をした方がよいと思います。
シングルユーザーモードはコマンドプロンプトで SQL Server を実行することで起動できます。
cd <インスタンスのプログラムディレクトリ> sqlservr.exe ?m ?s <インスタンス名> [実行例] |
?
[DAC で接続]
DAC で接続する場合は接続時にサーバー名に [ADMIN:] をつけて接続をします。
今回はサーバーで直接作業をしています。
# リモートで DAC を使用することも可能ですがその場合は別の設定をする必要があります。
これでシステムテーブルを更新する準備は完了です。
allow updates は SQL Server 2005 以降では無効なオプションですので、設定をしなくてもシステムテーブルを
更新することが可能です。
試しにシステムテーブルを直接更新してデータベースをエマージェンシー (緊急) モードに設定したいと思います。
sysdatabases / sys.database はビューですので、各ビューの実体である sysdbreg テーブルを直接更新しています。
# use mssqlsystemresource を実行してリソースデータベース上で更新をしようとするとエラーとなりますので
カレントデータベースは master データベース等で実行する必要があります。
update master.sys.sysdbreg set status = status|32768 where id = 5
[実行結果] 警告: システム テーブル ID 28 がデータベース ID 1 で直接更新されました。 (1 行処理されました) |
# ビット演算で status にエマージェンシーモードに対応するビットを有効にしています。
下が SQL 実行後の状態になります。
ALTER DATABASE ではなく、システムテーブルの直接更新でエマージェンシーモードに切り替わっています。
確認ができたのでシステムテーブルを更新できる状態にして以下の SQL を実行して正常な状態に戻しておきます。
update master.sys.sysdbreg set status = 0 where id = 5 |
?
以上でシステムテーブルの更新方法は終了です。
使うことがあるかはわかりませんが、奥の手として知っておくと便利な時があるかも知れません。
AD 降格時に Exchange 管理コンソールでエラーになった件の続き
Windows Server 2008 AD DS を Windows Server 2008 R2 AD DS に移行し、2008 AD DS を
降格させたときに Exchange Server 2010 RC の管理コンソール (EMC) を開くと Active Directory の
0x51 のエラーが発生してしまう件ですが、Exchange 2010 を OS 毎入れなおしたところ、
エラーが発生しなくなりました…。
再度 2008 AD DS をインストールして、降格させたところ現象が再現。
Set-ExchangeServer コマンドレットの、StaticDomainControllers / StaticConfigDomainController
StaticExcludedDomainControllers / StaticGlobalCatalogs を設定しても解決しませんでした。
また、AD の構成パーティションに情報が残っているのかと思って ldifde で構成パーティションを
エクスポートして一通り調べてみたのですが、2008 AD DS の情報は残っていませんでした。
他のユーザーで EMC を実行したところ、エラーが発生しなかったのでユーザー固有の問題かと思って、
エラーが発生しているユーザーのプロファイルを削除して、再度 EMC を実行したらエラーが発生しなくなりました。
Exchange や AD 側の問題ではなく、ユーザープロファイルの中に何か情報が残ってしまっていたのでしょうか??
具体的な解決策までたどり着いていないのですがメモとして残しておきたいと思います。
RTX1000 の初期設定だったり基本設定だったり
ルーターの勉強用に YAMAHA の RTX1000 を購入しました。
ネットワークは苦手なので、この機会にいろいろと学習したいです。
まずは初期設定についてメモとして投稿しておきたいと思います。
RT シリーズのマニュアルは RTシリーズのマニュアル配布 で公開されています。
なお、最新のファームは ファームウェア配布ページ から入手可能です。
代表的な設定例に関しては 設定例集 が提供されています。
2008 R2 Active Directory に移行 ? AD DS の降格 –
一通り、AD の移行が終わりましたので、今まで使用していた 2008 AD DS を撤去したいと思います。
[AD の降格]
AD の撤去は [dcpromo] から実施します。
AD CS 等、AD 関連の役割がインストールされている場合は事前に役割から削除しておく必要があります。
- [ファイル名を指定して実行] から [dcpromo] を実行します。
- [次へ] をクリックします。
- [OK] をクリックします。
- [次へ] をクリックします。
- [このサーバーを指している DNS 委任を削除する] のチェックをはずして、[次へ] をクリックします。
- パスワードを設定して、[次へ] をクリックします。
- [次へ] をクリックします。
- [完了時に再起動する] を有効にして、削除が終わるまで待ちます。
以上で既存ドメインコントローラーの降格は終了です。
この状態で Exchange Server 2010 RC に影響が出ないか確認をしてみたところ、以下のエラーが発生しました。
ひとまず、構成ドメイン コントローラーを変更してみました。
メールボックスの一覧等は表示できるようになったのですが、エラーが出る状況は変わらず。
どこかにドメインコントローラーの情報が残ってしまっているようです。
Exchange 2007 では正常に認識ができているのですが、2010 では NG です…。
仕方ないので、Exchange 2010 を再インストールしみたのですが状態は変わらず。
アンインストールしようとしたところいろいろと問題が発生して、以下の情報を参考にする必要がありました。
# メールボックスの削除とパブリックフォルダの削除がうまくできませんでした。
Exchange 2007 をコンピュータから削除する方法
Exchange 2010 – What is an arbitration mailbox?
Uninstall Exchange 2010
Exchange 2010 の RTM ももうじき TechNet からダウンロードできるようになると思いますので、
ダウロードできるようになったら RTM でも同様の現象が発生するのか試してみたいと思います。
2008 R2 Active Directory に移行 ? AD DS / DNS の移行 –
検証環境のインフラ整備をそろそろしないといけないと思い、まずは AD の移行から着手してみました。
私の検証環境の AD は 2008 SP2 で構築してあるのですが、これを 2008 R2 に移行してみます。
ワークグループ環境の DNS として設定しているものもあるため、移行の方針としては
- コンピュータ名は新規のもの
- IP アドレスは最終的に現行の AD のアドレスに変更
で作業したいと思います。
[フォレストとドメインの準備]
2008 R2 を 2008 ドメインのドメインコントローラーとして追加するために、フォレストとドメインの準備をします。
下の画像は、フォレストの準備をする前 / 後 スキーマのバージョンになります。
# 左がコマンド実行前、右がコマンド実行後です。
[objectVersion] が [44] から [47] に変更されています。?
- 2008 のドメインコントローラーに Windows Server 2008 R2 のインストールメディアを挿入します。
- 以下のコマンドを実行します。
RODCPREP は以前実行していたか覚えていなかったので改めて実行しています。
>DVD ドライブ
>cd supportadprep
>adprep.exe /forestprep
>adprep.exe /domainprep /gpprep
> adprep.exe /rodcprep実行例)
>D:
>cd supportadrep
>adprep.exe /forestprepADPREP の警告:
adprep を実行する前に、フォレスト内のすべての Windows 2000 Active Directory ドメイン コントローラーを Windows 2000 Service Pack 4 (SP4) 以降にアップグレードする必要があります。
[ユーザーによる操作]
既存の Windows 2000 Active Directory ドメイン コントローラーのすべてがこの要件を満たす場合は、C キーを押してから Enter キーを押して続行してください。中止するには、その他のキーを押してから Enter キーを押してください。c
xxxxxx への接続を開始しました
SSPI 結合に成功しました
現在のスキーマのバージョン 44
スキーマをバージョン 47 にアップグレードしています
ファイルの署名を検証しています
"xxxxxx" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "C:Windowssystem32sch45.ldf" からディレクトリをインポートしています
エントリを読み込んでいます…………………………………………………………
66 個のエントリを正しく修正しました。コマンドが正しく完了しました
ファイルの署名を検証しています
"xxxxxxx" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "C:Windowssystem32sch46.ldf" からディレクトリをインポートしています
エントリを読み込んでいます….
3 個のエントリを正しく修正しました。コマンドが正しく完了しました
ファイルの署名を検証しています
"xxxxxx" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "C:Windowssystem32sch47.ldf" からディレクトリをインポートしています
エントリを読み込んでいます…..
4 個のエントリを正しく修正しました。コマンドが正しく完了しました
"xxxxxx" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "C:Windowssystem32PAS.ldf" からディレクトリをインポートしています
エントリを読み込んでいます…………..
13 個のエントリを正しく修正しました。コマンドが正しく完了しました
…………………………………………………………………….
Adprep はフォレスト全体の情報を正しく更新しました。>adprep.exe /domainprep /gpprep
Domainprep を実行中…
Adprep はドメイン全体の情報を正しく更新しました。
更新が必要なグループ ポリシー オブジェクト (GPO) はありません。または、GPO 情報は既に更新されています。
[状態/結果]
Adprep はこの操作を再試行しませんでした。>adprep.exe /rodcprep
Adprep はドメイン FSMO に接続しました: xxxxxx。
Adprep は、パーティション DC=ForestDnsZones,DC=xxxxxx,DC=xxxxxに対して操作が実行されたことを検出しました。スキップして、次のパーティションに進みます。
===========================================================Adprep は、パーティション DC=DomainDnsZones,DC=xxxxxx,DC=xxxxxx に対して操作が実行されたことを検出しました。スキップして、次のパーティションに進みます。
======================================================================================================================
Adprep はパーティション DC=xxxx,DC=xxxx を検出しました。アクセス許可を更新しようとしています。Adprep はインフラストラクチャ FSMO に接続しました: xxxxxx。
パーティション DC=xxxxx,DC=xxxxxx に対する操作は成功しました。
======================================================Adprep は問題なく完了しました。すべてのパーティションが更新されました。詳細については、C:Windowsdebugadpreplogs20091031130646 ディレクトリの ADPrep.log を確認してください。
[固定 IP と DNS の設定]
まずは、追加のドメインコントローラとして設定するために、既存の AD を参照先 DNS として設定して、
固定 IP を割り当てます。
最終的に、現行の AD の IP アドレスに変更するつもりですので、設定している IP は仮の IP になりますね。
では次に追加のドメインコントローラーとして設定します。
[ドメインコントローラーの追加]
- [ファイル名を指定して実行] から [dcpromo] を実行します。
サーバーマネージャで事前に、役割を追加していなくても dcpromo 実行時に自動でインストールをしてくれます。 - [詳細モード インストールを使用する] を有効にして、[次へ] をクリックします。
詳細モードは必ず有効にする必要があるわけではないですが、設定を確認したかったので今回は有効にしています。 - [次へ] をクリックします。
- [既存のフォレスト] [既存のドメインにドメイン コントローラーを追加する] を選択し、[次へ] をクリックします。
- ドメイン名と追加のドメインコントローラーに設定するために使用するドメインアカウントの情報を入力し、
[次へ] をクリックします。
今回はワークグループの状態からドメインコントローラーとして追加しています。 - 追加するドメインを選択し、[次へ] をクリックします。
- 追加するサイトを選択して [次へ] をクリックします。
- DNS と GC はデフォルトで有効になっているようです。
今回は置き換えを目的としているので両方必要となります。
デフォルト状態で [次へ] をクリックします。 - [はい] をクリックします。
- [次へ] をクリックします。
- [次へ] をクリックします。
- [次へ] をクリックします。
- ディレクトリ復元モードのパスワードを設定し、[次へ] をクリックします。
- [次へ] をクリックします。
- [完了時に再起動する] を有効にしてインストールが完了するまで待ちます。
これでドメインコントローラーと DNS の追加が完了しました。
[FSMO の移行]
追加したドメインコントローラーに FSMO を移行します。
作業は追加したドメインコントローラー上で実行しています。
- ドメイン名前付けマスターの移行
- [ファイル名を指定して実行] で [regsvr32 schmmgmt.dll] を実行して、[OK] をクリックします。
- [mmc] を実行します。
- [ファイル] → [スナップインの追加と削除] をクリックします。
- [Active Directory スキーマ] を選択して、[追加] をクリックし、[OK] をクリックします。
? - 右クリックして、 [Active Directory ドメイン コントローラーの変更] をクリックします。
- 追加したドメインコントローラーを選択して、[OK] をクリックします。
- [OK] をクリックします。
- [Active Directory スキーマ] を展開してから右クリックして、[操作マスター] をクリックします。
- [変更] をクリックします。
- [はい] をクリックします。
- [OK] をクリックします。
- [閉じる] をクリックします。
以上で FSMO の移行は完了です。
[IP アドレスの変更]
最初の AD の IP を変更して、追加した AD に割り当てられるようにしてみました。
- 現行の AD の IP アドレスを変更します。
- 現行の AD の 参照先 DNS を上で設定した IP に変更します。
- 代替 DNS に変更前の IP を設定します。
# このあと、追加した AD に変更前の IP を設定するため。 - コマンドプロンプトで [ipconfig /registerdns] を実行します。
続いて追加した AD の IP を変更します。
- 追加した AD の IP アドレスを、現行の AD の IP アドレスに変更します。
- 追加
した AD の参照先 DNS を上で設定した IP に変更します。 - 代替 DNS に現行の AD の IP を設定します。
- コマンドプロンプトで [ipconfig /registerdns] を実行します。
再起動後も AD DS のサービスは正常に動いているので、ひとまず変更は完了のようです。