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. 啟動精靈
在 SQL Server Management Studio 的 [物件總管] 中,選取要啟用 Stretch 的資料表。
按一下滑鼠右鍵並選取 [延展] > [啟用] 來啟動精靈。
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)。