可変構造ファイルの各レコードの前には、2 バイトまたは 4 バイトのレコード ヘッダーがあります。このヘッダーの最初の 4 ビットはレコードの状態を示します。たとえば 0100 の値は、このレコードが標準のユーザー データ レコードであることを示します。
レコード ヘッダーの残りの部分には、レコード長が格納されます。最大レコード サイズが 4095 バイト未満 (レコード ヘッダーを除く) のすべてのファイルでは、レコード ヘッダーの長さは 2 バイトです。他のすべてのファイルでは、レコード ヘッダーの長さは 4 バイトです。
各レコードのレコード ヘッダーの先頭アドレスは、常に該当するファイル タイプのデータの境界整列値の整数倍になります (データの境界整列値の詳細については、「索引ファイルの種類」を参照してください)。その結果、レコードの直後には最大 n 個のパディング文字 (通常は空白文字) が格納される場合があります。これらの埋め込み文字は、レコード長には含まれません。
最初の 4 ビット | レコードタイプ |
---|---|
1 (0001) | システム レコード。データ ファイルの重複オカレンス レコードを示します。 |
2 (0010) | 削除されたレコード (空き領域リストを介して再使用可能)。 |
3 (0011) | システム レコード |
4 (0100) | 通常のユーザー データ レコード |
5 (0101) | 縮小ユーザー データ レコード (索引ファイルのみ)。データの直後の領域 (ヘッダーの長さで示される) は、データ レコードの末尾 (パディング文字が存在する場合はパディング文字列の末尾) から、次のレコード ヘッダーの先頭までの間の長さを示します。この情報は、2 バイトまたは 4 バイトのフィールドに格納されています (詳細は「索引ファイルの種類」を参照)。 |
6 (0110) | ポインター レコード (索引ファイルのみ)。レコード ヘッダー直後の n バイト (n は索引ファイルのファイル ポインター サイズ) には、ユーザー データ レコードの位置までの、ファイル内でのオフセットが含まれます (詳細は「索引ファイルの種類」を参照)。 |
7 (0111) | ポインター レコードで参照されるユーザー データ レコード |
8 (1000) | ポインター レコードで参照される縮小ユーザー データ レコード |
9 (1001) | 将来の使用に備えて予約されています。 |
10 (1010) | トランザクション中のユーザー データ レコード (ただし、まだ COMMIT されていない Fileshare トランザクションのレコード以外は 4) |
11 (1011) | トランザクション中の縮小ユーザー データ レコード (ただし、まだ COMMIT されていない Fileshare トランザクションのレコード以外は 5) |
12 (1100) | ポインター レコードによって参照されるトランザクション中のユーザー データ レコード (ただし、まだ COMMIT されていない Fileshare トランザクションのレコード以外は 7) |
13 (1101) | ポインター レコードによって参照されるトランザクション中の縮小ユーザー データ レコード (ただし、まだ COMMIT されていない Fileshare トランザクションのレコード以外は 8) |