Enable Stretch Database for a database

適用於: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 啟用資料庫,精靈會針對 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 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)

使用精靈

如需 [啟用資料庫的延展功能精靈] 的相關資訊,包括您必須輸入的資訊及必須決定的選擇,請參閱 開始執行啟用資料庫的延展功能精靈

使用 Transact-SQL

在您於個別資料表上啟用 Stretch Database 前,您必須在資料庫上啟用它。

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

  1. 開始之前,請為 Stretch Database 要移轉的資料選擇現有的 Azure 伺服器,或建立新的 Azure 伺服器。

  2. 在 Azure 伺服器上,利用 SQL Server 的 IP 位址範圍,來建立能讓 SQL Server 與遠端伺服器通訊的防火牆規則。

    您可以透過嘗試從 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. 以 CREDENTIAL 引數提供現有的系統管理員認證,或指定 FEDERATED_SERVICE_ACCOUNT = ON。 下列範例提供現有的認證。

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

後續步驟

另請參閱