テーブルの Stretch Database を有効にする

適用対象: 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 アクセス許可も必要です。

注

後で、Stretch Database を無効にする場合は、テーブルまたはデータベースで Stretch Database を無効にしてもリモート オブジェクトは削除されないことに注意してください。 リモート テーブルまたはリモート データベースを削除する場合は、Azure 管理ポータルを使用して削除する必要があります。 リモート オブジェクトを手動で削除するまで、引き続き Azure ストレージのコストが発生します。

ウィザードを使用する

1. ウィザードを起動する

  1. SQL Server Management Studio のオブジェクト エクスプローラーで、ストレッチを有効にするテーブルを選択します。

  2. 右クリックして [ストレッチ] > [有効にする] を選び、ウィザードを起動します。

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)」を参照してください。

関連項目