データ保有期間ポリシーを有効または無効にする
重要
Azure SQL Edge の提供は、2025 年 9 月 30 日に終了する予定です。 詳細な情報と移行オプションについては、提供終了に関する通知を参照してください。
Note
Azure SQL Edge では、ARM64 プラットフォームがサポートされなくなりました。
この記事では、データベースおよびテーブルのデータ保有期間ポリシーを有効または無効にする方法について説明します。
データベースのデータ保有期間を有効にする
次の例では、ALTER DATABASE を使用してデータ保有期間を有効にする方法を示します。
ALTER DATABASE [<DatabaseName>] SET DATA_RETENTION ON;
データベースのデータ保有期間が有効になっているかどうかを確認する
次のコマンドを使用して、データベースのデータ保有期間が有効になっているかどうかを確認できます。
SELECT is_data_retention_enabled,
name
FROM sys.databases;
テーブルのデータ保有期間を有効にする
データ保有期間は、データを自動的に消去する各テーブルについて有効にする必要があります。 データベースとテーブルでデータ保持が有効になっている場合は、バックグラウンド システム タスクによりテーブルが定期的にスキャンされ、古くなった (期限切れの) 行が特定されて削除されます。 データ保有期間は、CREATE TABLE を使用しているテーブルの作成中、または ALTER TABLE の使用中に有効にすることができます。
次の例では、CREATE TABLE を使用して、テーブルのデータ保有期間を有効にする方法を示します。
CREATE TABLE [dbo].[data_retention_table] (
[dbdatetime2] DATETIME2(7),
[product_code] INT,
[value] CHAR(10),
CONSTRAINT [pk_current_data_retention_table] PRIMARY KEY CLUSTERED ([product_code])
)
WITH (
DATA_DELETION = ON (
FILTER_COLUMN = [dbdatetime2],
RETENTION_PERIOD = 1 day
)
);
CREATE TABLE コマンドの WITH (DATA_DELETION = ON (FILTER_COLUMN = [dbdatetime2], RETENTION_PERIOD = 1 day))
部分により、テーブルにデータ保有期間が設定されます。 このコマンドでは、次の必須パラメーターを使用します。
DATA_DELETION: データ保有期間がオンであるか、オフであるかを示します。
FILTER_COLUMN: テーブル内の列の名前です。これを使用して、行が古くなっているかどうかを確認します。 フィルター列となるのは、次のデータ型の列のみです。
- date
- smalldatetime
- datetime
- datetime2
- datetimeoffset
RETENTION_PERIOD: 単位記述子が後に続く整数値。 使用できる単位は、DAY、DAYS、WEEK、WEEKS、MONTH、MONTHS、YEAR、YEARS です。
次の例では、ALTER TABLE を使用して、テーブルのデータ保有期間を有効にする方法を示します。
ALTER TABLE [dbo].[data_retention_table]
SET (
DATA_DELETION = ON (
FILTER_COLUMN = [timestamp],
RETENTION_PERIOD = 1 day
)
)
テーブルのデータ保有期間が有効になっているかどうかを確認する
次のコマンドを使用して、データ保有期間が有効になっているテーブルを確認できます。
SELECT name,
data_retention_period,
data_retention_period_unit
FROM sys.tables;
値が data_retention_period = -1
で data_retention_period_unit
が INFINITE である場合は、テーブルにデータ保持期間が設定されていないことを示します。
次のクエリを使用して、データ保有期間の filter_column
として使用される列を特定できます。
SELECT name
FROM sys.columns
WHERE is_data_deletion_filter_column = 1
AND object_id = object_id(N'dbo.data_retention_table', N'U');
データベースとテーブルのデータ保有期間の関連付け
データベースとテーブルのデータ保有期間の設定を組み合わせて使用して、期限切れの行の自動クリーンアップをテーブルで実行するかどうかを決定できます。
データベース オプション | テーブル オプション | 動作 |
---|---|---|
OFF | OFF | データ保有期間ポリシーが無効になっていて、期限切れのレコードの自動および手動クリーンアップの両方が無効になっています。 |
OFF | ON | データ保有期間ポリシーがテーブルで有効になっています。 古いレコードの自動クリーンアップは無効になっていますが、手動クリーンアップ方法を使用して、古いレコードをクリーンアップできます。 |
ON | OFF | データ保有期間ポリシーがデータベース レベルで有効になっています。 ただし、このオプションがテーブル レベルでは無効になっているため、期限切れの行の、保有期間に基づくクリーンアップは行われません。 |
ON | ON | データベースとテーブルの両方でデータ保有期間ポリシーが有効になっています。 古いレコードの自動クリーンアップが有効になっています。 |
テーブルでデータ保有期間を無効にする
データ保有期間は、ALTER TABLE を使用してテーブルで無効にすることができます。 次のコマンドを使用して、データ保有期間をテーブルで無効にすることができます。
ALTER TABLE [dbo].[data_retention_table]
SET (DATA_DELETION = OFF);
データベースでデータ保有期間を無効にする
データ保有期間は、ALTER DATABASE を使用してテーブルで無効にすることができます。 次のコマンドを使用して、データ保有期間をデータベースで無効にすることができます。
ALTER DATABASE [<DatabaseName>] SET DATA_RETENTION OFF;