快速入門:SQL 備份與還原至與 S3 相容的物件儲存體

適用於:SQL Server 2022 (16.x) 和更新版本

本快速入門可協助您了解如何將備份寫入至與 S3 相容的物件儲存體以及從中還原。

注意

SQL Server 2022 引進了對備份至與 S3 相容的物件儲存體以及從中還原的支援。 SQL Server 2019 和舊版不支援此功能。

必要條件

若要完成本快速入門,您必須熟悉 SQL Server 備份與還原概念以及 Transact-SQL (T-SQL) 語法。 您需要 S3 端點、SQL Server Management Studio (SSMS),以及執行 SQL Server 或 Azure SQL 受控執行個體之伺服器的存取權。 此外,用於發出 BACKUP 和 RESTORE 指令的帳號,應屬於 db_backupoperator 資料庫角色,且具有 ALTER ANY CREDENTIAL 權限,並具備 CREATE DATABASE 權限,以便將 RESTORE 還原到新的資料庫;或者,該帳號必須是 sysadmin 或 dbcreator 固定伺服器角色的成員之一;若是還原到現有資料庫上,則必須是該資料庫的擁有者(dbo)。

建立測試資料庫

在此步驟中,使用 SQL Server Management Studio (SSMS) 來建立測試資料庫。

  1. 啟動 SQL Server Management Studio (SSMS) 並連線至 SQL Server 執行個體。

  2. 開啟 [新增查詢] 視窗。

  3. 執行下列 T-SQL 程式碼以建立測試資料庫。 刷新 [物件總管] 中的 [資料庫] 節點以查看您的新資料庫。 在 SQL 受控執行個體上建立的新資料庫會自動啟用 TDE,因此您將必須加以停用以繼續。

    USE [master];
    GO
    
    -- Create database
    CREATE DATABASE [SQLTestDB];
    GO
    
    -- Create table in database
    USE [SQLTestDB];
    GO
    CREATE TABLE SQLTest (
        ID INT NOT NULL PRIMARY KEY,
        c1 VARCHAR(100) NOT NULL,
        dt1 DATETIME NOT NULL DEFAULT GETDATE()
    );
    GO
    
    -- Populate table 
    USE [SQLTestDB];
    GO
    
    INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1');
    INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2');
    INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3');
    INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4');
    INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5');
    GO
    
    SELECT * FROM SQLTest;
    GO
    
    -- Disable TDE for newly-created databases on SQL Managed Instance 
    USE [SQLTestDB];
    GO
    ALTER DATABASE [SQLTestDB] SET ENCRYPTION OFF;
    GO
    DROP DATABASE ENCRYPTION KEY;
    GO
    

建立認證

若要建立用於驗證的 SQL Server 認證,請依照下列步驟進行:

  1. 啟動 SQL Server Management Studio (SSMS) 並連線至 SQL Server 執行個體。

  2. 開啟 [新增查詢] 視窗。

  3. 建立伺服器層級認證。 認證的名稱取決於與 S3 相容的儲存體平台。 與 PolyBase 資料庫範圍的認證不同,備份/還原認證儲存在執行個體層級。 搭配與 S3 相容的儲存體使用時,認證必須根據 URL 路徑來命名。

    CREATE CREDENTIAL [s3://<endpoint>:<port>/<bucket>]
    WITH
            IDENTITY    = 'S3 Access Key',
            SECRET      = '<AccessKeyID>:<SecretKeyID>';
    GO
    

注意

欲了解更多伺服器憑證 S3 相容儲存的範例,請參見 CREATE CREDENTIAL (Transact-SQL)。

備份資料庫

在此步驟中,使用 T-SQL 將資料庫 SQLTestDB 備份至與 S3 相容的物件儲存體。

使用 T-SQL 透過執行下列命令以備份您的資料庫:

USE [master];
GO

BACKUP DATABASE [SQLTestDB]
TO      URL = 's3://<endpoint>:<port>/<bucket>/SQLTestDB.bak'
WITH    FORMAT /* overwrite any existing backup sets */
,       STATS = 10
,       COMPRESSION;

刪除資料庫

在此步驟中,請先刪除資料庫,然後再執行還原。 此步驟僅適用於此教學課程的目的,在一般資料庫管理程序中不太可能使用。 您可以略過此步驟,但是在 Azure SQL 受控執行個體上進行還原時,您將需要變更資料庫的名稱,或執行還原命令 WITH REPLACE,以便在內部部署環境中成功還原資料庫。

  1. 展開 [資料庫] 節點於 [物件總管] 中,右鍵點選 資料庫,然後選擇刪除以啟動 [刪除物件] 精靈。
  2. 在 Azure SQL 受控執行個體上,選取 [確定] 以刪除資料庫。 在內部部署環境中,選取 [關閉現有的連接] 旁的核取方塊並選取 [確定] 以刪除資料庫。

還原資料庫

在此步驟中,使用 SQL Server Management Studio 中的 GUI 或使用 Transact-SQL 來還原資料庫。

  1. 以滑鼠右鍵按一下 SQL Server Management Studio 內 [物件總管] 中的 [資料庫] 節點,然後選取 [還原資料庫]。

  2. 選取 [裝置],然後選取省略符號 (...) 以選擇裝置。

    顯示 [選取還原裝置] 畫面的螢幕擷取畫面。

  3. 從備份媒體類型下拉選單選擇網址,然後選擇新增以新增你的裝置。

    顯示 [新增備份裝置] 畫面的螢幕擷取畫面。

  4. 輸入虛擬主機 URL,並貼上與 S3 相容的物件儲存體的祕密金鑰 ID 和存取金鑰 ID。

    [選取 S3 備份檔案位置] 對話框的螢幕擷取畫面,其中已填入 URL 和密鑰欄位。

  5. 選取 [確定] 以選取備份檔案位置。

  6. 選取 [確定] 以關閉 [選取備份裝置] 對話方塊。

  7. 選取 [確定] 以還原您的資料庫。