Enable Stretch Database for a database

适用于: 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”>“启用”,且尚未为数据库启用 Stretch Database,向导将会为数据库配置 Stretch Database,并在此过程中让你配置表。 请执行本主题中的步骤,而非为表启用 Stretch Database中的步骤。

在数据库或表上启用 Stretch Database 需要 db_owner 权限。 对数据库启用 Stretch Database 还需要有 CONTROL DATABASE 权限。

注意

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

准备工作

  • 查看 Stretch Database 的限制

  • Stretch Database 将数据迁移到 Azure,因此需要一个 Azure 帐户和一个用于计费的订阅。 注册 Azure 帐户。

  • 具有创建新 Azure 服务器或选择现有 Azure 服务器所需的连接和登录名信息。

先决条件:在服务器上启用 Stretch Database

必须先在本地服务器上启用 Stretch Database,然后才能在数据库或表上启用它。 此操作需要 sysadmin 或 serveradmin 权限。

  • 如果你拥有必要的管理权限,“为数据库启用 Stretch”向导将会为服务器配置 Stretch Database。

  • 如果你没有必要的权限,在你运行向导之前,管理员必须通过运行 sp_configure 来手动启用该选项,否则便需由管理员运行该向导。

若要在服务器上手动启用 Stretch Database,请运行 sp_configure 并打开 remote data archive 选项。 以下示例通过将“远程数据存档”选项的值设置为 1 来启用该选项。

EXEC sp_configure 'remote data archive' , '1';
GO

RECONFIGURE;
GO

有关详细信息,请参阅配置远程数据存档服务器配置选项sp_configure (Transact-SQL)

使用向导

有关为数据库启用延伸向导的信息,包括必须输入的信息以及必须做出的选择,请参阅 Get started by running the Enable Database for Stretch Wizard(通过运行“启用数据库延伸向导”入门)。

使用 Transact-SQL

必须先在数据库上启用 Stretch Database,然后才能在单个表上启用它。

在数据库或表上启用 Stretch Database 需要 db_owner 权限。 对数据库启用 Stretch Database 还需要有 CONTROL DATABASE 权限。

  1. 在开始之前,请选择 Stretch Database 要将数据迁移到的现有 Azure 服务器,或创建一个新的 Azure 服务器。

  2. 在该 Azure 服务器上,创建一个允许 SQL Server 与远程服务器通信的防火墙规则,该规则使用 SQL Server 的 IP 地址范围。

    可以轻松找到所需值,并且通过尝试从 SQL Server Management Studio (SSMS) 中的对象资源管理器连接 Azure 服务器来创建防火墙规则。 SSMS 可帮助你通过打开以下对话框(已包括所需的 IP 地址值)来创建规则。

    重要

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

    Screenshot showing a firewall rule for Stretch.

  3. 若要为 SQL Server 数据库配置 Stretch Database,该数据库必须拥有数据库主密钥。 数据库主密钥能保护 Stretch Database 用来连接到远程数据库的凭据。 以下示例将创建一个新数据库主密钥。

    USE <database>;
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD='<password>';
    GO
    

    有关数据库主密钥的详细信息,请参阅 CREATE MASTER KEY (Transact-SQL)创建数据库主密钥

  4. 当你为数据库配置 Stretch Database 时,必须为 Stretch Database 提供凭据,以供本地 SQL Server 与远程 Azure 服务器之间进行通信使用。 有两个选项。

    • 可以提供管理员凭据。

      • 如果通过运行向导启用 Stretch Database,则可以在那时创建凭据。

      • 如果计划通过运行 ALTER DATABASE启用 Stretch Database,则必须在运行 ALTER DATABASE 以启用 Stretch Database 之前手动创建凭据。

        以下示例将创建新凭据。

        CREATE DATABASE SCOPED CREDENTIAL [<db_scoped_credential_name>]
            WITH IDENTITY = '<identity>' , SECRET = '<secret>';
        GO
        

        有关凭据的详细信息,请参阅 CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)。 创建凭据需要 ALTER ANY CREDENTIAL 权限。

    • 你可以使用联合服务帐户,让 SQL Server 与远程 Azure 服务器在下列条件全数成立时进行通信。

      • 用来运行 SQL Server 实例的服务帐户为域帐户。

      • 域帐户属于其 Active Directory 与 Microsoft Entra ID(以前称为 Azure Active Directory联合的域。

      • 远程 Azure 服务器已配置为支持 Microsoft Entra 身份验证。

      • 用来运行 SQL Server 实例的服务帐户在远程 Azure 服务器上必须配置为 dbmanagersysadmin 帐户。

  5. 若要为数据库配置 Stretch Database,请运行 ALTER DATABASE 命令。

    1. 对于 SERVER 参数,请提供现有 Azure 服务器的名称,包括名称的 .database.windows.net 部分 — 例如 MyStretchDatabaseServer.database.windows.net

    2. 提供具有 CREDEMTIAL 参数的现有管理员凭据,或指定 FEDERATED_SERVICE_ACCOUNT = ON。 以下示例提供了一个现有的凭据。

    ALTER DATABASE [<database name>]
        SET REMOTE_DATA_ARCHIVE = ON
            (
                SERVER = '<server_name>' ,
                CREDENTIAL = [<db_scoped_credential_name>]
            );
    GO
    

后续步骤

请参阅