以降は、SQL Server 2005に付属するAdventureWorksデータベースでTransactionHistoryテーブルからTransactionHistoryArchiveテーブルに2003年9月分の受注データを移動する方法を図解します。
1. 初期状態
TransactionHistoryテーブルには、12個のパーティションがあり月ごとの受注データが格納されています。TransactionHistoryArchiveテーブルには、2つのパーティションしかありません。2番目のパーティションは、空になっています。
2. TransactionHistoryArchiveテーブルに3つ目のパーティションを作成
リスト11のスクリプトの最初のバッチにより、TransactionHistoryArchivePSパーティションスキームに次に展開するファイルグループを追加しています。2番目のバッチでは、パーティション関数に2003年10月のデータを格納するためのパーティション定義を追加します。これらのスクリプトにより、TransactionHistoryArchiveテーブルに、2003年10月のデータを格納するパーティションが用意されます。
ALTER PARTITION SCHEME TransactionHistoryArchivePS NEXT |
リスト11 TransactionHistoryArchiveに3つ目のパーティションを作成 |
3. TransactionHistoryテーブルのデータをTransactionHistoryArchiveテーブルに移動
リスト12のスクリプトの最初のバッチにより、ソースとなるTransactionHistoryテーブルにCHECK制約が設定されます。このCHECK制約は、データの移動後もTransactionHistoryテーブルに残されるデータのキー値の範囲を定義しています。2番目のバッチでは、TransactionHistoryテーブルのパーティション1のデータ(2003年9月のデータ)をTransactionHistoryArchiveテーブルのパーティション2に移動します。このCHECK制約の指定は、パーティションを切り替える前に、必ず必要になります。
ALTER TABLE [Production].[TransactionHistory] ADD CONSTRAINT |
リスト12 アーカイブ用のテーブルにデータを移動 |
4.各テーブルのパーティションをマージ
パーティションの移動後は、下図のような構成になります。
リスト13のスクリプトの最初のバッチにより、TransactionHistoryテーブルの空になったパーティション1をパーティション2にマージし、2番目のバッチによりTransactionHistoryArchiveテーブルのパーティション1とパーティション2をマージします。
ALTER PARTITION FUNCTION TransactionHistoryPF() |
リスト13 パーティションのマージ |
マージ後は、下図の状態になります。
5.TransactionHistoryテーブルに12個目のパーティションを作成
リスト14のスクリプトにより、TransactionHistoryテーブルに、2004年9月のデータを格納するためのパーティションを作成します。このスクリプトによりTransactionHistoryテーブルのパーティションは、12個に戻ります。
ALTER PARTITION SCHEME TransactionHistoryPS |
リスト14 12個目のパーティションを作成 |
なお、今回の記事で紹介した内容は、「SQL Server 2005 日本語Beta2版」の仕様に基づいています。実際に記事の内容を試されたい場合は、SQL Server 2005 日本語Beta2を入手する必要があります。入手方法については、
を確認してください。なお、製品版では仕様が変更される可能性もありますのでご注意ください。
今回はSQL Serverの次期バージョンとなるSQL Server 2005に搭載予定のデータパーティション機能を紹介しました。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.