Enable Stretch Database for a table
適用対象: SQL Server 2016 (13.x) 以降 - Windows のみ
重要
拡張データベースは、SQL Server 2022 (16.x) および Azure SQL Database では非推奨になります。 この機能は、データベース エンジンの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。
Stretch Database 用にテーブルを構成するには、SQL Server Management Studio でテーブルに対して [ストレッチ] > [有効にする] の順に選択し、[テーブルのストレッチの有効化] ウィザードを開きます。 Transact-SQL を使用して、既存のテーブルで Stretch Database を有効にしたり、Stretch Database が有効になっている新しいテーブルを作成することもできます。
重要
Stretch Database のサポートは、SQL Server Management Studio v19 で削除されました。 Stretch Database を管理するには、SQL Server Management Studio v18.9.1 以前を使います。
コールド データを別のテーブルに保存している場合は、そのテーブル全体を移行できます。
テーブルにホット データとコールド データの両方が含まれている場合は、移行する行を選択するフィルター関数を指定できます。
前提条件。 テーブルに対して [ストレッチ] > [有効にする] の順に選択した場合、データベースに対して Stretch Database がまだ有効になっていないと、ウィザードは最初に Stretch Database 用にデータベースを構成します。 この記事の手順ではなく、「Stretch ウィザードに対するデータベースの有効化を実行して開始する」の手順に従います。
権限: データベースまたはテーブルで Stretch Database を有効にするには、db_owner 権限が必要です。 テーブルで Stretch Database を有効にするには、テーブルの ALTER アクセス許可も必要です。
Note
後で、Stretch Database を無効にする場合は、テーブルまたはデータベースで Stretch Database を無効にしてもリモート オブジェクトは削除されないことに注意してください。 リモート テーブルまたはリモート データベースを削除する場合は、Azure 管理ポータルを使用して削除する必要があります。 リモート オブジェクトを手動で削除するまで、引き続き Azure ストレージのコストが発生します。
ウィザードを使用する
1. ウィザードを起動する
SQL Server Management Studio のオブジェクト エクスプローラーで、ストレッチを有効にするテーブルを選択します。
右クリックして [ストレッチ] > [有効にする] を選び、ウィザードを起動します。
2. はじめに
ウィザードの目的と前提条件を確認します。
3. データベースのテーブルを選択する
有効にするテーブルが表示され、選択されていることを確認します。
テーブル全体を移行することも、ウィザードでフィルター関数を指定することもできます。 移行する行を選択するために別の種類のフィルター関数を使用する場合、次のいずれかの操作を行います。
ウィザードを終了し、ALTER TABLE ステートメントを実行してテーブルの Stretch を有効にして、フィルター関数を指定します。
ウィザードを終了した後、ALTER TABLE ステートメントを実行してフィルター関数を指定します。 必要な手順については、「 Add a filter function after running the Wizard」 (ウィザードの実行後、フィルター関数を追加する) を参照してください。
ALTER TABLE 構文については、この記事で後ほど説明します。
4.まとめ
ウィザードで入力した値および選択したオプションを確認します。 次に、 [完了] を選択してストレッチを有効にします。
5. 結果
結果を確認します。
Transact-SQL の使用
Transact-SQL を使用して、既存のテーブルで Stretch Database を有効にしたり、Stretch Database が有効になっている新しいテーブルを作成したりできます。
オプション
CREATE TABLE または ALTER TABLE を実行してテーブルで Stretch Database を有効にする場合は、次のオプションを使用します。
テーブルにホット データとコールド データの両方が含まれている場合は、オプションで
FILTER_PREDICATE = <function>
句を使用して、移行する行を選択する関数を指定します。 この述語でインライン テーブル値関数を呼び出す必要があります。 詳細については、「 フィルター関数を使用して、移行する行を選択する」を参照してください。 フィルター関数を指定しない場合、テーブル全体が移行されます。重要
指定したフィルター関数のパフォーマンスが低いと、データ移行のパフォーマンスも低くなります。 Stretch Database では、CROSS APPLY 演算子を使用してテーブルにフィルター関数を適用します。
データ移行をすぐに開始する場合は
MIGRATION_STATE = OUTBOUND
を指定し、データ移行の開始を延期する場合はMIGRATION_STATE = PAUSED
を指定します。
既存のテーブルに対して Stretch Database を有効にする
Stretch Database 用に既存のテーブルを構成するには、ALTER TABLE コマンドを実行します。
次の例では、テーブル全体を移行し、データ移行をすぐに開始します。
USE [<Stretch-enabled database name>];
GO
ALTER TABLE [<table name>]
SET ( REMOTE_DATA_ARCHIVE = ON ( MIGRATION_STATE = OUTBOUND ) );
GO
次の例では、dbo.fn_stretchpredicate
インライン テーブル値関数によって識別される行だけを移行し、データ移行を延期します。 フィルター関数の詳細については、「フィルター関数を使用して、移行する行を選択する」を参照してください。
USE [<Stretch-enabled database name>];
GO
ALTER TABLE [<table name>]
SET ( REMOTE_DATA_ARCHIVE = ON (
FILTER_PREDICATE = dbo.fn_stretchpredicate(),
MIGRATION_STATE = PAUSED ) );
GO
詳細については、「 ALTER TABLE (Transact-SQL)」をご覧ください。
Stretch Database が有効になっている新しいテーブルを作成する
Stretch Database が有効になっている新しいテーブルを作成するには、CREATE TABLE コマンドを実行します。
次の例では、テーブル全体を移行し、データ移行をすぐに開始します。
USE [<Stretch-enabled database name>];
GO
CREATE TABLE [<table name>]
(
col1 int
/* replace the sample "col1" column shown above, with the actual list of columns */
)
WITH ( REMOTE_DATA_ARCHIVE = ON ( MIGRATION_STATE = OUTBOUND ) );
GO
次の例では、dbo.fn_stretchpredicate
インライン テーブル値関数によって識別される行だけを移行し、データ移行を延期します。 フィルター関数の詳細については、「フィルター関数を使用して、移行する行を選択する」を参照してください。
USE [<Stretch-enabled database name>];
GO
CREATE TABLE [<table name>]
(
col1 int
/* replace the sample "col1" column shown above, with the actual list of columns */
)
WITH ( REMOTE_DATA_ARCHIVE = ON (
FILTER_PREDICATE = dbo.fn_stretchpredicate(),
MIGRATION_STATE = PAUSED ) );
GO
詳細については、「 CREATE TABLE (Transact-SQL)」をご覧ください。