禁用 Stretch Database 和移回远程数据

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

重要

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

可以使用 Transact-SQL 禁用表或数据库的 Stretch Database。

为表禁用 Stretch Database 之后,数据迁移会停止,查询结果不再包括来自远程表的结果。

如果想暂停数据迁移,请参阅暂停和恢复数据迁移 (Stretch Database)

注意

针对表或数据库禁用 Stretch Database 不会删除远程对象。 如果希望删除远程表或远程数据库,则需要使用 Azure 管理门户进行删除。 远程对象会继续产生 Azure 成本,直到删除它们。 有关详细信息,请参阅 SQL Server Stretch Database 定价

禁用表的 Stretch Database

使用 Transact-SQL

  • 要针对某个表禁用 Stretch 并将该表的远程数据从 Azure 复制回 SQL Server,请运行以下命令。 将所有远程数据从 Azure 复制回到 SQL Server 之后,将为表禁用延伸。

    此命令不能取消。

    USE [<Stretch-enabled database name>];
    GO
    ALTER TABLE [<Stretch-enabled table name>]
       SET ( REMOTE_DATA_ARCHIVE ( MIGRATION_STATE = INBOUND ) );
    GO
    

    将表的远程数据从 Azure 复制回 SQL Server 会产生数据传输费用。 有关详细信息,请参阅 数据传输定价详细信息

  • 若要为某个表禁用延伸并放弃远程数据,请运行以下命令。

    USE <Stretch-enabled database name>;
    GO
    ALTER TABLE <Stretch-enabled table name>
       SET ( REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY ( MIGRATION_STATE = PAUSED ) );
    GO
    

    禁用表的 Stretch Database 不会删除远程数据或远程表。 如要删除远程表,必须使用 Azure 管理门户进行删除。 远程表会继续产生 Azure 成本,直到被删除。 有关详细信息,请参阅 SQL Server Stretch Database 定价

为数据库禁用 Stretch Database

禁用数据库的 Stretch Database 之前,必须在数据库中已启用“拉伸”的各个表上禁用 Stretch Database。

使用 Transact-SQL

运行以下命令。

ALTER DATABASE [<Stretch-enabled database name>]
    SET REMOTE_DATA_ARCHIVE = OFF;
GO

禁用数据库的 Stretch Database 不会删除远程数据库。 若要删除远程数据库,必须使用 Azure 管理门户。 远程数据库会继续产生 Azure 成本,直到被删除。 有关详细信息,请参阅 SQL Server Stretch Database 定价

请参阅