Enable Stretch Database for a table

適用於:SQL Server 2016 (13.x) 和更新版本 - 僅限 Windows

重要

Stretch Database 在 SQL Server 2022 (16.x) 及 Azure SQL 資料庫中已被取代。 資料庫引擎的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

若要設定 Stretch Database 的資料表,請在 SQL Server Management Studio 中為資料表選取 [延展 > 啟用],開啟 [對資料表啟用延展精靈]。 您也可以使用 Transact-SQL 對現有的資料表啟用 Stretch Database,或建立已啟用 Stretch Database 的新資料表。

重要

SQL Server Management Studio v19 中移除了 Stretch Database 支援。 若要管理 Stretch Database,您可以使用 SQL Server Management Studio v18.9.1 或更低版本。

  • 如果您將原始資料儲存在個別的資料表中,可以遷移整個資料表。

  • 若您的資料表同時包含作用及原始資料,您可以指定篩選函數,以選取要移轉的資料列。

必要條件。 如果您為資料表選取了 [延展 > 啟用],卻未針對資料庫啟用 Stretch Database,精靈會先設定 Stretch Database 資料庫。 請遵循開始執行 [啟用資料庫的延展功能精靈] 的步驟著手,而不是本文中的步驟。

權限。 在資料庫或資料表上啟用 Stretch Database 需要 db_owner 權限。 在資料表上啟用 Stretch Database 也需要資料表上的 ALTER 權限。

注意

稍後,如果您停用 Stretch Database,請記住針對資料表或資料庫停用 Stretch Database,並不會刪除遠端物件。 若您想要刪除遠端資料表或遠端資料庫,則必須使用 Azure 管理入口網站將其卸除。 遠端物件會繼續產生 Azure 成本,直到您手動將其刪除為止。

使用精靈

1. 啟動精靈

  1. 在 SQL Server Management Studio 的 [物件總管] 中,選取要啟用 Stretch 的資料表。

  2. 按一下滑鼠右鍵並選取 [延展] > [啟用] 來啟動精靈。

2. 簡介

檢閱精靈的用途及必要條件。

3. 選取資料庫資料表

確認已顯示並選取您要啟用的資料表。

您可以移轉整個資料表,也可以在精靈中指定篩選函數。 如果您想要使用不同類型的篩選函數來選取要移轉的資料列,請執行下列其中一項操作。

  • 結束精靈,然後執行 ALTER TABLE 陳述式來啟用資料表的延展功能以及指定篩選函數。

  • 結束精靈之後,請執行 ALTER TABLE 陳述式來指定篩選函數。 如需必要的步驟,請參閱 Add a filter function after running the Wizard(在執行精靈後新增篩選函數)。

本文稍後將描述 ALTER TABLE 語法。

4. 摘要

檢閱您輸入的值和在精靈中選取的選項。 然後選取 [完成] 以啟用 Stretch。

5. 結果

檢閱結果。

使用 Transact-SQL

您可以對現有的資料表啟用 Stretch Database,或使用 Transact-SQL 建立已啟用 Stretch Database 的新資料表。

選項

當您執行 CREATE TABLE 或 ALTER TABLE 在資料表上啟用 Stretch Database 時,請使用下列選項。

  • 如果資料表同時包含作用及原始資料,您可以選擇使用 FILTER_PREDICATE = <function> 子句指定函數來選取要遷移的資料列。 此述詞必須呼叫內嵌資料表值函數。 如需詳細資訊,請參閱 Select rows to migrate by using a filter 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 內嵌資料表值函數所識別的資料列,並延後資料移轉的範例。 如需有關篩選函數的詳細資訊,請參閱 Select rows to migrate by using a filter function(使用篩選函數選取要移轉的資料列)。

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 內嵌資料表值函數所識別的資料列,並延後資料移轉的範例。 如需有關篩選函數的詳細資訊,請參閱 Select rows to migrate by using a filter function(使用篩選函數選取要移轉的資料列)。

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)

另請參閱