Transact-SQL (T-SQL) を使用した Always On 可用性グループの作成Create an Always On availability group using Transact-SQL (T-SQL)

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、 Transact-SQLTransact-SQL 機能を有効にする SQL Server 2017SQL Server 2017 のインスタンス上で可用性グループを作成および構成するために Always On 可用性グループAlways On availability groups を使用する方法について説明します。This topic describes how to use Transact-SQLTransact-SQL to create and configure an availability group on instances of SQL Server 2017SQL Server 2017 on which the Always On 可用性グループAlways On availability groups feature is enabled. 可用性グループ は、1 つのまとまりとしてフェールオーバーする一連のユーザー データベースと、フェールオーバーをサポートする一連のフェールオーバー パートナー ( 可用性レプリカ) を定義します。An availability group defines a set of user databases that will fail over as a single unit and a set of failover partners, known as availability replicas, that support failover.

注意

可用性グループの概要については、「 Always On 可用性グループの概要 (SQL Server)の Always On 可用性グループを PowerShell コマンドレットで作成および構成する方法について説明します。For an introduction to availability groups, see Overview of Always On Availability Groups (SQL Server).

注意

Transact-SQLTransact-SQLの代わりに、可用性グループの作成ウィザードまたは SQL ServerSQL Server PowerShell コマンドレットを使用する方法もあります。As an alternative to using Transact-SQLTransact-SQL, you can use the Create Availability Group wizard or SQL ServerSQL Server PowerShell cmdlets. 詳細については、「 可用性グループ ウィザードの使用 (SQL Server Management Studio)」、「 [新しい可用性グループ] ダイアログ ボックスの使用 (SQL Server Management Studio)」、または「 可用性グループの作成 (SQL Server PowerShell)」を参照してください。For more information, see Use the Availability Group Wizard (SQL Server Management Studio), Use the New Availability Group Dialog Box (SQL Server Management Studio), or Create an Availability Group (SQL Server PowerShell).

前提条件、制限事項、および推奨事項Prerequisites, Restrictions, and Recommendations

  • 可用性グループを作成する前に、可用性レプリカをホストする SQL ServerSQL Server のインスタンスが同じ Windows Server フェールオーバー クラスタリング (WSFC) フェールオーバー クラスター内の別の WSFC ノードに存在していることを確認します。Before creating an availability group, verify that the instances of SQL ServerSQL Server that host availability replicas reside on different Windows Server Failover Clustering (WSFC) node within the same WSFC failover cluster. また、各サーバー インスタンスが Always On 可用性グループAlways On availability groups の他のすべての前提条件を満たしていることも確認します。Also, verify that each of the server instance meets all other Always On 可用性グループAlways On availability groups prerequisites. 詳細については、「Always On 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)」を参照することを強くお勧めします。For more information, we strongly recommend that you read Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

PermissionsPermissions

sysadmin 固定サーバー ロールのメンバーシップと、CREATE AVAILABILITY GROUP サーバー権限、ALTER ANY AVAILABILITY GROUP 権限、CONTROL SERVER 権限のいずれかが必要です。Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

Transact-SQL を使用した可用性グループの作成と構成Using Transact-SQL to Create and Configure an Availability Group

作業の概要および対応する Transact-SQL ステートメントSummary of Tasks and Corresponding Transact-SQL Statements

次の表は、可用性グループの作成と構成に伴う基本的な作業と、これらの作業に使用する Transact-SQLTransact-SQL ステートメントの一覧です。The following table lists the basic tasks involved in creating and configuring an availability group and indicates which Transact-SQLTransact-SQL statements to use for these tasks. Always On 可用性グループAlways On availability groups に関連したこれらの作業は、この表に示されている順に実行する必要があります。The Always On 可用性グループAlways On availability groups tasks must be performed in the sequence in which they are presented in the table.

タスクTask Transact-SQL ステートメントTransact-SQL Statement(s) 作業の実行場所 *Where to Perform Task *
データベース ミラーリング エンドポイントを作成する ( SQL ServerSQL Server インスタンスごとに 1 回)Create database mirroring endpoint (once per SQL ServerSQL Server instance) CREATE ENDPOINT endpointName ...FOR DATABASE_MIRRORINGCREATE ENDPOINT endpointName ... FOR DATABASE_MIRRORING データベース ミラーリング エンドポイントが欠落している各サーバー インスタンスで実行します。Execute on each server instance that lacks database mirroring endpoint.
可用性グループを作成するCreate availability group CREATE AVAILABILITY GROUPCREATE AVAILABILITY GROUP 初期プライマリ レプリカをホストするサーバー インスタンスで実行します。Execute on the server instance that is to host the initial primary replica.
セカンダリ レプリカを可用性グループに参加させるJoin secondary replica to availability group ALTER AVAILABILITY GROUP group_name JOINALTER AVAILABILITY GROUP group_name JOIN セカンダリ レプリカをホストする各サーバー インスタンスで実行します。Execute on each server instance that hosts a secondary replica.
セカンダリ データベースを準備するPrepare the secondary database BACKUP および RESTOREBACKUP and RESTORE. プライマリ レプリカをホストするサーバー インスタンスでバックアップを作成します。Create backups on the server instance that hosts the primary replica.

セカンダリ レプリカをホストする各サーバー インスタンス上で、RESTORE WITH NORECOVERY を使用してバックアップを復元します。Restore backups on each server instance that hosts a secondary replica, using RESTORE WITH NORECOVERY.
各セカンダリ データベースを可用性グループに参加させてデータ同期を開始するStart data synchronization by joining each secondary database to availability group ALTER DATABASE database_name SET HADR AVAILABILITY GROUP = group_nameALTER DATABASE database_name SET HADR AVAILABILITY GROUP = group_name セカンダリ レプリカをホストする各サーバー インスタンスで実行します。Execute on each server instance that hosts a secondary replica.

*ここに記載されたサーバー インスタンスに接続して作業を実行します。*To perform a given task, connect to the indicated server instance or instances.

Transact-SQL の使用Using Transact-SQL

注意

これらの各 Transact-SQLTransact-SQL ステートメントのコード例が使用された構成手順の例については、「例:Windows 認証を使用した可用性グループの構成」を参照してください。For a sample configuration procedure containing code examples of each these Transact-SQLTransact-SQL statements, see Example: Configuring an Availability Group that Uses Windows Authentication.

  1. プライマリ レプリカをホストするサーバー インスタンスに接続します。Connect to the server instance that is to host the primary replica.

  2. 可用性グループは、CREATE AVAILABILITY GROUP という Transact-SQLTransact-SQL ステートメントを使用して作成します。Create the availability group by using the CREATE AVAILABILITY GROUPTransact-SQLTransact-SQL statement.

  3. 新しいセカンダリ レプリカを可用性グループに参加させます。Join the new secondary replica to the availability group. 詳細については、「 可用性グループへのセカンダリ レプリカの参加 (SQL Server)、または PowerShell を使用して、既存の AlwaysOn 可用性グループにセカンダリ レプリカを追加する方法について説明します。For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

  4. 可用性グループ内の各データベースについて、セカンダリ データベースを作成します。これは、プライマリ データベースの最新のバックアップを、RESTORE WITH NORECOVERY で復元することによって行います。For each database in the availability group, create a secondary database by restoring recent backups of the primary database, using RESTORE WITH NORECOVERY. 詳細については、「例:Windows 認証を使用した可用性グループの構成 (Transact-SQL)」で、データベース バックアップの復元手順をまず参照してください。For more information, see Example: Setting Up an Availability Group Using Windows Authentication (Transact-SQL), starting with the step that restores the database backup.

  5. 新しいセカンダリ データベースをすべて可用性グループに参加させます。Join every new secondary database to the availability group. 詳細については、「 可用性グループへのセカンダリ レプリカの参加 (SQL Server)、または PowerShell を使用して、既存の AlwaysOn 可用性グループにセカンダリ レプリカを追加する方法について説明します。For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

例:Windows 認証を使用した可用性グループの構成Example: Configuring an Availability Group that Uses Windows Authentication

この例では、 Always On 可用性グループAlways On availability groups 構成プロシージャのサンプルを作成します。サンプルでは、Windows 認証を使用するデータベース ミラーリング エンドポイントのセットアップ、さらには、可用性グループとそのセカンダリ データベースの作成と構成を Transact-SQLTransact-SQL を使用して行います。This example creates a sample Always On 可用性グループAlways On availability groups configuration procedure that uses Transact-SQLTransact-SQL to set up database mirroring endpoints that use Windows Authentication and to create and configure an availability group and its secondary databases.

この例の内容は次のとおりです。This example contains the following sections:

サンプル構成プロシージャを使用するうえでの前提条件Prerequisites for Using the Sample Configuration Procedure

このサンプル プロシージャには、次の要件があります。This sample procedure has the following requirements:

  • サーバー インスタンスは Always On 可用性グループAlways On availability groupsをサポートしている必要があります。The server instances must support Always On 可用性グループAlways On availability groups. 詳細については、「 Always On 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)」を参照してください。For more information, see Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

  • 2 つのサンプル データベース ( MyDb1 および MyDb2) が、プライマリ レプリカをホストするサーバー インスタンス上に存在する必要があります。Two sample databases, MyDb1 and MyDb2, must exist on the server instance that will host the primary replica. 次のコード例では、これらの 2 つのデータベースを作成、構成し、それぞれの完全バックアップを作成します。The following code examples create and configure these two databases and create a full backup of each. これらのコード例は、サンプルの可用性グループの作成先となるサーバー インスタンス上で実行します。Execute these code examples on the server instance on which you intend to create the sample availability group. サンプル可用性グループの初期プライマリ レプリカは、このサーバー インスタンスでホストされます。This server instance will host the initial primary replica of the sample availability group.

    1. 次の例の Transact-SQLTransact-SQL では、これらのデータベースを作成し、完全復旧モデルを使用するように変更を加えています。The following Transact-SQLTransact-SQL example creates these databases and alters them to use the full recovery model:

      -- Create sample databases:  
      CREATE DATABASE MyDb1;  
      GO  
      ALTER DATABASE MyDb1 SET RECOVERY FULL;  
      GO  
      
      CREATE DATABASE MyDb2;  
      GO  
      ALTER DATABASE MyDb2 SET RECOVERY FULL;  
      GO  
      
    2. 次のコード例では、 MyDb1 および MyDb2データベースの完全バックアップを作成します。The following code example creates a full database backup of MyDb1 and MyDb2. このコード例では、架空のバックアップ共有 \\FILESERVER\SQLbackupsを使用します。This code example uses a fictional backup share, \\FILESERVER\SQLbackups.

      -- Backup sample databases:  
      BACKUP DATABASE MyDb1   
      TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
          WITH FORMAT  
      GO  
      
      BACKUP DATABASE MyDb2   
      TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
          WITH FORMAT  
      GO  
      
      

[TopOfExample][TopOfExample]

サンプル構成プロシージャSample Configuration Procedure

このサンプル構成では、信頼関係のある異なるドメイン (DOMAIN1DOMAIN2) の下でサービス アカウントが実行される 2 つのスタンドアロン サーバー インスタンスに可用性レプリカを作成します。In this sample configuration, the availability replica will be created on two stand-alone server instances whose service accounts run under different, but trusted, domains (DOMAIN1 and DOMAIN2).

次の表は、このサンプル構成で使用する値をまとめたものです。The following table summarizes the values used in this sample configuration.

初期ロールInitial role システムSystem ホスト SQL ServerSQL Server インスタンスHost SQL ServerSQL Server Instance
プライマリPrimary COMPUTER01 AgHostInstance
セカンダリSecondary COMPUTER02 既定のインスタンスDefault instance.
  1. 可用性グループの作成先となるサーバー インスタンス ( 上の という名前のインスタンス) 上に、 AgHostInstance dbm_endpoint COMPUTER01という名前のデータベース ミラーリング エンドポイントを作成します。Create a database mirroring endpoint named dbm_endpoint on the server instance on which you plan to create the availability group (this is an instance named AgHostInstance on COMPUTER01). このエンドポイントはポート 7022 を使用します。This endpoint uses port 7022. 可用性グループの作成先となるサーバー インスタンスには、プライマリ レプリカがホストされることに注意してください。Note that the server instance on which you create the availability group will host the primary replica.

    -- Create endpoint on server instance that hosts the primary replica:  
    CREATE ENDPOINT dbm_endpoint  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    
    
  2. セカンダリ レプリカをホストするサーバー インスタンス ( 上の既定のサーバー インスタンス) 上にエンドポイント dbm_endpoint COMPUTER02を作成します。Create an endpoint dbm_endpoint on the server instance that will host the secondary replica (this is the default server instance on COMPUTER02). このエンドポイントはポート 5022 を使用します。This endpoint uses port 5022.

    -- Create endpoint on server instance that hosts the secondary replica:   
    CREATE ENDPOINT dbm_endpoint  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=5022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    
    
  3. 注意

    可用性レプリカをホストするサーバー インスタンスのサービス アカウントが同じドメイン アカウントで実行されている場合、この手順は不要です。If the service accounts of the server instances that are to host your availability replicas run under the same domain account this step is unnecessary. 省略して次の手順に進んでください。Skip it and go directly to the next step.

    2 つのサーバー インスタンスのサービス アカウントが、互いに異なるドメイン ユーザーで実行されている場合、それぞれのサーバー インスタンス上に、相手のサーバー インスタンス用のログインを作成し、このログイン権限に、ローカルのデータベース ミラーリング エンドポイントのアクセス権を付与します。If the service accounts of the server instances run under different domain users, on each server instance, create a login for the other server instance and grant this login permission to access the local database mirroring endpoint.

    ログインを作成し、エンドポイントの権限を付与するための Transact-SQLTransact-SQL ステートメントのコード例を次に示します。The following code example shows the Transact-SQLTransact-SQL statements for creating a login and granting it permission on an endpoint. ここでは、リモート サーバー インスタンスのドメイン アカウントを domain_name\user_nameとしています。The domain account of the remote server instance is represented here as domain_name\user_name.

    -- If necessary, create a login for the service account, domain_name\user_name  
    -- of the server instance that will host the other replica:  
    USE master;  
    GO  
    CREATE LOGIN [domain_name\user_name] FROM WINDOWS;  
    GO  
    -- And Grant this login connect permissions on the endpoint:  
    GRANT CONNECT ON ENDPOINT::dbm_endpoint   
       TO [domain_name\user_name];  
    GO  
    
  4. ユーザー データベースが存在するサーバー インスタンス上に、可用性グループを作成します。On the server instance where the user databases reside, create the availability group.

    次のコード例では、サンプル データベースの MyDb1MyDb2 を作成したサーバー インスタンス上に、 MyAGという名前の可用性グループを作成しています。The following code example creates an availability group named MyAG on the server instance on which the sample databases, MyDb1 and MyDb2, were created. 最初に、 AgHostInstanceCOMPUTER01 上のローカル サーバー インスタンス ( ) が指定されています。The local server instance, AgHostInstance, on COMPUTER01 is specified first. 初期プライマリ レプリカは、このインスタンスによってホストされます。This instance will host the initial primary replica. リモート サーバー インスタンス ( COMPUTER02上の既定のサーバー インスタンス) は、セカンダリ レプリカをホストするように指定されています。A remote server instance, the default server instance on COMPUTER02, is specified to host a secondary replica. どちらの可用性レプリカも、非同期コミット モードと手動フェールオーバーを使用するように構成します (非同期コミットのレプリカでは、手動フェールオーバーは、データ損失の可能性を伴う強制フェールオーバーを意味します)。Both availability replica are configured to use asynchronous-commit mode with manual failover (for asynchronous-commit replicas manual failover means forced failover with possible data loss).

    
              -- Create the availability group, MyAG:   
    CREATE AVAILABILITY GROUP MyAG   
       FOR   
          DATABASE MyDB1, MyDB2   
       REPLICA ON   
          'COMPUTER01\AgHostInstance' WITH   
             (  
             ENDPOINT_URL = 'TCP://COMPUTER01.Adventure-Works.com:7022',   
             AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,  
             FAILOVER_MODE = MANUAL  
             ),  
          'COMPUTER02' WITH   
             (  
             ENDPOINT_URL = 'TCP://COMPUTER02.Adventure-Works.com:5022',  
             AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,  
             FAILOVER_MODE = MANUAL  
             );   
    GO  
    

    可用性グループを作成するための他の Transact-SQLTransact-SQL コード例については、「CREATE AVAILABILITY GROUP (Transact-SQL)」を参照してください。For additional Transact-SQLTransact-SQL code examples of creating an availability group, see CREATE AVAILABILITY GROUP (Transact-SQL).

  5. セカンダリ レプリカをホストするサーバー インスタンス上で、セカンダリ レプリカを可用性グループに参加させます。On the server instance that hosts the secondary replica, join the secondary replica to the availability group.

    次のコード例では、 COMPUTER02 上のセカンダリ レプリカを MyAG 可用性グループに参加させています。The following code example joins the secondary replica on COMPUTER02 to the MyAG availability group.

    -- On the server instance that hosts the secondary replica,   
    -- join the secondary replica to the availability group:  
    ALTER AVAILABILITY GROUP MyAG JOIN;  
    GO  
    
  6. セカンダリ レプリカをホストするサーバー インスタンス上でセカンダリ データベースを作成します。On the server instance that hosts the secondary replica, create the secondary databases.

    次のコード例では、RESTORE WITH NORECOVERY でデータベース バックアップを復元することによって、 MyDb1MyDb2 のセカンダリ データベースを作成しています。The following code example creates the MyDb1 and MyDb2 secondary databases by restoring database backups using RESTORE WITH NORECOVERY.

    -- On the server instance that hosts the secondary replica,   
    -- Restore database backups using the WITH NORECOVERY option:  
    RESTORE DATABASE MyDb1   
        FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
        WITH NORECOVERY  
    GO  
    
    RESTORE DATABASE MyDb2   
        FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
        WITH NORECOVERY  
    GO  
    
    
  7. プライマリ レプリカをホストするサーバー インスタンス上で、各プライマリ データベースのトランザクション ログをバックアップします。On the server instance that hosts the primary replica, back up the transaction log on each of the primary databases.

    重要

    実際に可用性グループを構成する際は、このログのバックアップを作成する前に、まず対応するセカンダリ データベースを可用性グループに参加させ、それが済んでからプライマリ データベースのログ バックアップ作業を行うことをお勧めします。When you are configuring a real availability group, we recommend that, before taking this log backup, you suspend log backup tasks for your primary databases until you have joined the corresponding secondary databases to the availability group.

    次のコード例では、MyDb1 および MyDb2 のトランザクション ログのバックアップを作成します。The following code example creates a transaction log backup on MyDb1 and on MyDb2.

    -- On the server instance that hosts the primary replica,   
    -- Backup the transaction log on each primary database:  
    BACKUP LOG MyDb1   
    TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
        WITH NOFORMAT  
    GO  
    
    BACKUP LOG MyDb2   
    TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
        WITHNOFORMAT  
    GO  
    
    

    ヒント

    通常、ログ バックアップは各プライマリ データベースで作成した後、対応するセカンダリ データベースで (WITH NORECOVERY を使用して) 復元する必要があります。Typically, a log backup must be taken on each primary database and then restored on the corresponding secondary database (using WITH NORECOVERY). ただし、データベースを作成したばかりでこのログ バックアップがまだ作成されていない場合や、復旧モデルを SIMPLE から FULL に変更したばかりの場合など、ログ バックアップが不要な場合もあります。However, this log backup might be unnecessary if the database has just been created and no log backup has been taken yet or the recovery model has just been changed from SIMPLE to FULL.

  8. セカンダリ レプリカをホストするサーバー インスタンス上で、セカンダリ データベースにログ バックアップを適用します。On the server instance that hosts the secondary replica, apply log backups to the secondary databases.

    次のコード例では、RESTORE WITH NORECOVERY でデータベース バックアップを復元することによって、 MyDb1MyDb2 のセカンダリ データベースにバックアップを適用しています。The following code example applies backups to MyDb1 and MyDb2 secondary databases by restoring database backups using RESTORE WITH NORECOVERY.

    重要

    実際のセカンダリ データベースを準備する際は、セカンダリ データベースの作成元となったデータベース バックアップの後に作成されたすべてのログ バックアップを適用する必要があります。その際には古いものから順に適用し、毎回 WITH NORECOVERY を使用します。When you are preparing a real secondary database, you need to apply every log backup taken since the database backup from which you created the secondary database, starting with the earliest and always using RESTORE WITH NORECOVERY. 当然、完全と差分の両方のデータベース バックアップを復元する場合は、差分バックアップ以降に作成されたログ バックアップを適用するだけでかまいません。Of course, if you restore both full and differential database backups, you would only need to apply the log backups taken after the differential backup.

    -- Restore the transaction log on each secondary database,  
    -- using the WITH NORECOVERY option:  
    RESTORE LOG MyDb1   
        FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    RESTORE LOG MyDb2   
        FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  9. セカンダリ レプリカをホストするサーバー インスタンス上で、新しいセカンダリ データベースを可用性グループに参加させます。On the server instance that hosts the secondary replica, join the new secondary databases to the availability group.

    次のコード例では、 MyDb1 のセカンダリ データベースと MyDb2 のセカンダリ データベースを順に MyAG 可用性グループに参加させています。The following code example, joins the MyDb1 secondary database and then the MyDb2 secondary databases to the MyAG availability group.

    -- On the server instance that hosts the secondary replica,   
    -- join each secondary database to the availability group:  
    ALTER DATABASE MyDb1 SET HADR AVAILABILITY GROUP = MyAG;  
    GO  
    
    ALTER DATABASE MyDb2 SET HADR AVAILABILITY GROUP = MyAG;  
    GO  
    
    

サンプル構成プロシージャの完全なコード例Complete Code Example for Sample Configuration Procedure

以下のコードは、すべての手順のコード例を総合したサンプル構成プロシージャの全体像です。The following example merges the code examples from all the steps of the sample configuration procedure. このコード例で使用されているプレースホルダーの値については次の表にまとめました。The following table summarized the placeholder values used in this code example. このコード例の手順の詳細については、このトピックの「 サンプル構成プロシージャを使用するうえでの前提条件 」および「 サンプル構成プロシージャ」を参照してください。For more information about the steps in this code example, see Prerequisites for Using the Sample Configuration Procedure and Sample Configuration Procedure, earlier in this topic.

プレースホルダーPlaceholder [説明]Description
\\FILESERVER\SQLbackups\\FILESERVER\SQLbackups 架空のバックアップ共有。Fictional backup share.
\\FILESERVER\SQLbackups\MyDb1.bak\\FILESERVER\SQLbackups\MyDb1.bak MyDb1 のバックアップ ファイル。Backup file for MyDb1.
\\FILESERVER\SQLbackups\MyDb2.bak\\FILESERVER\SQLbackups\MyDb2.bak MyDb2 のバックアップ ファイル。Backup file for MyDb2.
70227022 各データベース ミラーリング エンドポイントに割り当てられたポート番号。Port number assigned to each database mirroring endpoint.
COMPUTER01\AgHostInstanceCOMPUTER01\AgHostInstance 初期プライマリ レプリカをホストするサーバー インスタンス。Server instance that hosts the initial primary replica.
COMPUTER02COMPUTER02 初期セカンダリ レプリカをホストするサーバー インスタンス。Server instance that hosts the initial secondary replica. これは、 COMPUTER02上の既定のサーバー インスタンスです。This is the default server instance on COMPUTER02.
上のdbm_endpoint 各データベース ミラーリング エンドポイントに指定した名前。Name specified for each database mirroring endpoint.
MyDb1MyAG サンプルの可用性グループの名前。Name of sample availability group.
MyDb1MyDb1 1 つ目のサンプル データベースの名前。Name of first sample database.
MyDb2MyDb2 2 つ目のサンプル データベースの名前。Name of second sample database.
DOMAIN1\user1DOMAIN1\user1 初期プライマリ レプリカをホストするサーバー インスタンスのサービス アカウント。Service account of the server instance that is to host the initial primary replica.
DOMAIN2\user2DOMAIN2\user2 初期セカンダリ レプリカをホストするサーバー インスタンスのサービス アカウント。Service account of the server instance that is to host the initial secondary replica.
TCP://COMPUTER01.Adventure-Works.com:7022TCP://COMPUTER01.Adventure-Works.com:7022 COMPUTER01 上の SQL ServerSQL Server の AgHostInstance インスタンスのエンドポイント URL。Endpoint URL of the AgHostInstance instance of SQL ServerSQL Server on COMPUTER01.
TCP://COMPUTER02.Adventure-Works.com:5022TCP://COMPUTER02.Adventure-Works.com:5022 COMPUTER02 上の SQL ServerSQL Server の既定のインスタンスのエンドポイント URL。Endpoint URL of the default instance of SQL ServerSQL Server on COMPUTER02.

注意

可用性グループを作成するための他の Transact-SQLTransact-SQL コード例については、「CREATE AVAILABILITY GROUP (Transact-SQL)」を参照してください。For additional Transact-SQLTransact-SQL code examples of creating an availability group, see CREATE AVAILABILITY GROUP (Transact-SQL).

-- on the server instance that will host the primary replica,   
-- create sample databases:  
CREATE DATABASE MyDb1;  
GO  
ALTER DATABASE MyDb1 SET RECOVERY FULL;  
GO  
  
CREATE DATABASE MyDb2;  
GO  
ALTER DATABASE MyDb2 SET RECOVERY FULL;  
GO  
  
-- Backup sample databases:  
BACKUP DATABASE MyDb1   
TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
    WITH FORMAT  
GO  
  
BACKUP DATABASE MyDb2   
TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
    WITH FORMAT  
GO  
  
-- Create the endpoint on the server instance that will host the primary replica:  
CREATE ENDPOINT dbm_endpoint  
    STATE=STARTED   
    AS TCP (LISTENER_PORT=7022)   
    FOR DATABASE_MIRRORING (ROLE=ALL)  
GO  
  
-- Create the endpoint on the server instance that will host the secondary replica:   
CREATE ENDPOINT dbm_endpoint  
    STATE=STARTED   
    AS TCP (LISTENER_PORT=7022)   
    FOR DATABASE_MIRRORING (ROLE=ALL)  
GO  
  
-- If both service accounts run under the same domain account, skip this step. Otherwise,   
-- On the server instance that will host the primary replica,   
-- create a login for the service account   
-- of the server instance that will host the secondary replica, DOMAIN2\user2,   
-- and grant this login connect permissions on the endpoint:  
USE master;  
GO  
CREATE LOGIN [DOMAIN2\user2] FROM WINDOWS;  
GO  
GRANT CONNECT ON ENDPOINT::dbm_endpoint   
   TO [DOMAIN2\user2];  
GO  
  
-- If both service accounts run under the same domain account, skip this step. Otherwise,   
-- On the server instance that will host the secondary replica,  
-- create a login for the service account   
-- of the server instance that will host the primary replica, DOMAIN1\user1,   
-- and grant this login connect permissions on the endpoint:  
USE master;  
GO  
  
CREATE LOGIN [DOMAIN1\user1] FROM WINDOWS;  
GO  
GRANT CONNECT ON ENDPOINT::dbm_endpoint   
   TO [DOMAIN1\user1];  
GO  
  
-- On the server instance that will host the primary replica,   
-- create the availability group, MyAG:  
CREATE AVAILABILITY GROUP MyAG   
   FOR   
      DATABASE MyDB1, MyDB2   
   REPLICA ON   
      'COMPUTER01\AgHostInstance' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER01.Adventure-Works.com:7022',  
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = AUTOMATIC  
         ),  
      'COMPUTER02' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER02.Adventure-Works.com:7022',  
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = AUTOMATIC  
         );   
GO  
  
-- On the server instance that hosts the secondary replica,   
-- join the secondary replica to the availability group:  
ALTER AVAILABILITY GROUP MyAG JOIN;  
GO  
  
-- Restore database backups onto this server instance, using RESTORE WITH NORECOVERY:  
RESTORE DATABASE MyDb1   
    FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
    WITH NORECOVERY  
GO  
  
RESTORE DATABASE MyDb2   
    FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
    WITH NORECOVERY  
GO  
  
-- Back up the transaction log on each primary database:  
BACKUP LOG MyDb1   
TO DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
    WITH NOFORMAT  
GO  
  
BACKUP LOG MyDb2   
TO DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
    WITHNOFORMAT  
GO  
  
-- Restore the transaction log on each secondary database,  
-- using the WITH NORECOVERY option:  
RESTORE LOG MyDb1   
    FROM DISK = N'\\FILESERVER\SQLbackups\MyDb1.bak'   
    WITH FILE=1, NORECOVERY  
GO  
RESTORE LOG MyDb2   
    FROM DISK = N'\\FILESERVER\SQLbackups\MyDb2.bak'   
    WITH FILE=1, NORECOVERY  
GO  
  
-- On the server instance that hosts the secondary replica,   
-- join each secondary database to the availability group:  
ALTER DATABASE MyDb1 SET HADR AVAILABILITY GROUP = MyAG;  
GO  
  
ALTER DATABASE MyDb2 SET HADR AVAILABILITY GROUP = MyAG;  
GO  
  

関連タスクRelated Tasks

可用性グループおよびレプリカのプロパティを構成するにはTo configure availability group and replica properties

可用性グループの構成を完了するにはTo complete availability group configuration

別の方法で可用性グループを作成するAlternative ways to create an availability group

AlwaysOn 可用性グループを有効にするにはTo enable Always On Availability Groups

データベース ミラーリング エンドポイントを構成するにはTo configure a database mirroring endpoint

AlwaysOn 可用性グループの構成のトラブルシューティング方法To troubleshoot Always On Availability Groups configuration

関連コンテンツRelated Content

参照See Also

データベース ミラーリング エンドポイント (SQL Server) The Database Mirroring Endpoint (SQL Server)
AlwaysOn 可用性グループの概要 (SQL Server) Overview of Always On Availability Groups (SQL Server)
可用性グループ リスナー、クライアント接続、およびアプリケーションのフェールオーバー (SQL Server) Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server)
AlwaysOn 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)