クイックスタート: S3 互換オブジェクト ストレージへの SQL バックアップと復元

適用対象: 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 Managed Instance が実行されているサーバーへのアクセスが必要です。 さらに、バックアップと復元コマンドを発行するために使用するアカウントは、ALTER ANY CREDENTIAL 権限を持つ db_backupoperator データベース ロールにあり、新しいデータベースに対して復元するための CREATE DATABASE 権限を持っているか、sysadmin 固定サーバー ロールと dbcreator 固定サーバー ロールのメンバーであるか、既存のデータベースを復元する場合はデータベースのオーナー (dbo) である必要があります。

テスト データベースを作成する

このステップでは、SQL Server Management Studio (SSMS) を使用してテスト データベースを作成します。

  1. SQL Server Management Studio (SSMS) を起動し、SQL Server インスタンスに接続します。

  2. [新しいクエリ] ウィンドウを開きます。

  3. 次の T-SQL コードを実行して、テスト データベースを作成します。 新しいデータベースを表示するには、オブジェクト エクスプローラー[データベース] ノードを最新の情報に更新します。 SQL Managed Instance 上に新しく作成されたデータベースでは自動的に 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 を使用して S3 互換オブジェクト ストレージにデータベース SQLTestDB をバックアップします。

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 Managed Instance での復元中にデータベースの名前を変更するか、復元コマンド WITH REPLACE を実行する必要があります。

  1. オブジェクト エクスプローラー[データベース] ノードを展開し、SQLTestDB データベースを右クリックして [削除] を選択し、オブジェクトの削除ウィザードを起動します。
  2. Azure SQL Managed Instance で [OK] を選択して、データベースを削除します。 オンプレミスの場合は、[既存の接続を閉じる] の横のチェック ボックスをオンにしてから [OK] を選択して、データベースを削除します。

データベースの復元

このステップでは、SQL Server Management Studio の GUI または Transact-SQL を使用して、データベースを復元します。

  1. SQL Server Management Studio のオブジェクト エクスプローラー[データベース] ノードを右クリックし、[データベースの復元] を選択します。

  2. [デバイス] を選択し、省略記号 [...] を選択してデバイスを選択します。

    [デバイスの復元の選択] 画面のスクリーンショット。

  3. [バックアップ メディアの種類] ドロップダウンから [URL] を選択し、[追加] を選択してデバイスを追加します。

    [バックアップデバイスの追加] 画面のスクリーンショット。

  4. 仮想ホスト URL を入力し、S3 互換オブジェクト ストレージの秘密鍵 ID とアクセス キー ID を貼り付けます。

    URL とキー フィールドが設定されている [S3 バックアップ ファイルの場所の選択] ダイアログ ボックスのスクリーンショット。

  5. [OK] を選択して、バックアップ ファイルの場所を選択します。

  6. [OK] を選択すると [バックアップ デバイスの選択] ダイアログ ボックスが閉じます。

  7. [OK] を選択してデータベースを復元します。

SQL Server のバックアップに S3 互換オブジェクト ストレージを使用する場合の概念やベスト プラクティスについて、次の推奨トピックで説明しています。