Enable Stretch Database for a table

适用于: SQL Server 2016 (13.x) 及更高版本 - 仅限 Windows

重要

SQL Server 2022 (16.x) 和 Azure SQL 数据库中已弃用 Stretch Database。 在数据库引擎的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

若要为 Stretch Database 配置表,请在 SQL Server Management Studio 中为表选择“Stretch > 启用”,以打开“为 Stretch 启用表”向导。 还可以使用 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 权限。 对某个表启用延伸数据库还要求对该表拥有 ALTER 权限。

注意

之后如果要禁用 Stretch Database,请记住,禁用表或数据库的 Stretch Database 不会删除远程对象。 如果希望删除远程表或远程数据库,则需要使用 Azure 管理门户进行删除。 远程对象会继续产生 Azure 成本,直到手动删除它们。

使用向导

1.启动向导

  1. 在 SQL Server Management Studio 的对象资源管理器中,选择要在其上启用 Stretch 的表。

  2. 右键单击并选择“Stretch > 启用”,以启动向导。

2. 简介

查看向导和必备组件的用途。

3. 选择数据库表

确认已显示并选定你要启用的表。

你可以迁移整个表,或在向导中指定一个筛选器函数。 如果想要使用不同类型的筛选器函数来选择要迁移的行,请执行以下操作之一。

  • 退出向导并运行 ALTER TABLE 语句以对表启用 Stretch 并指定筛选器函数。

  • 运行 ALTER TABLE 语句以在退出向导后指定筛选器函数。 有关所需步骤,请参阅 运行向导后添加筛选器函数

ALTER TABLE 语法将在本文的后面进行介绍。

4.摘要

查看你输入的值和你在该向导中选择的选项。 然后选择“完成” 以启用 Stretch。

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)

另请参阅