Creare un gruppo di disponibilità (Transact-SQL)Create an Availability Group (Transact-SQL)

In questo argomento viene descritto come utilizzare Transact-SQLTransact-SQL per creare e configurare un gruppo di disponibilità su istanze di SQL Server 2017SQL Server 2017 nelle quali è abilitata la funzionalità Gruppi di disponibilità Always OnAlways 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 Gruppi di disponibilità Always OnAlways On availability groups feature is enabled. Tramite un gruppo di disponibilità vengono definiti un set di database utente di cui verrà eseguito il failover come unità singola e un set di partner di failover, noti come repliche di disponibilità, che supportano il failover.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.

Nota

Per un'introduzione ai gruppi di disponibilità, vedere Panoramica di gruppi di disponibilità AlwaysOn (SQL Server).For an introduction to availability groups, see Overview of Always On Availability Groups (SQL Server).

Nota

In alternativa all'utilizzo di Transact-SQLTransact-SQL, è possibile utilizzare la procedura guidata Crea gruppo di disponibilità o i cmdlet di 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. Per altre informazioni, vedere Usare la Creazione guidata Gruppo di disponibilità (SQL Server Management Studio), Usare la finestra di dialogo Nuovo gruppo di disponibilità (SQL Server Management Studio), o Creare un gruppo di disponibilità ( 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).

Prima di iniziare Before You Begin

Prima di iniziare a creare il primo gruppo di disponibilità, è consigliabile leggere questa sezione.We strongly recommend that you read this section before attempting to create your first availability group.

Prerequisiti, restrizioni e raccomandazioni Prerequisites, Restrictions, and Recommendations

  • Prima di creare un gruppo di disponibilità, verificare che le istanze di SQL ServerSQL Server che ospitano repliche di disponibilità si trovino in un nodo del Clustering di failover di Windows Server (Windows Server Failover Clustering, WSFC) diverso all'interno dello stesso cluster di failover 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. Inoltre, verificare che ciascuna delle istanze del server soddisfi tutti gli altri prerequisiti Gruppi di disponibilità Always OnAlways On availability groups .Also, verify that each of the server instance meets all other Gruppi di disponibilità Always OnAlways On availability groups prerequisites. Per altre informazioni è consigliabile vedere Prerequisiti, restrizioni e consigli per i gruppi di disponibilità Always On (SQL Server).For more information, we strongly recommend that you read Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

Sicurezza Security

Autorizzazioni Permissions

Sono necessarie l'appartenenza al ruolo predefinito del server sysadmin e l'autorizzazione server CREATE AVAILABILITY GROUP oppure l'autorizzazione ALTER ANY AVAILABILITY GROUP o 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.

Riepilogo delle attività e istruzioni Transact-SQL corrispondenti Summary of Tasks and Corresponding Transact-SQL Statements

Nella tabella seguente sono elencate le attività di base necessarie per la creazione e la configurazione di un gruppo di disponibilità e vengono indicate le istruzioni Transact-SQLTransact-SQL da utilizzare per queste attività.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. È necessario eseguire le attività Gruppi di disponibilità Always OnAlways On availability groups nell'ordine con cui sono elencate nella tabella.The Gruppi di disponibilità Always OnAlways On availability groups tasks must be performed in the sequence in which they are presented in the table.

AttivitàTask Istruzione/i Transact-SQLTransact-SQL Statement(s) Posizione in cui eseguire l'attività\Where to Perform Task\**
Creare un endpoint del mirroring del database (una volta per ogni istanza di SQL ServerSQL Server )Create database mirroring endpoint (once per SQL ServerSQL Server instance) CREATE ENDPOINT endpointNameCREATE ENDPOINT endpointName FOR DATABASE_MIRRORINGFOR DATABASE_MIRRORING Eseguire in ogni istanza del server in cui non è presente l'endpoint del mirroring del database.Execute on each server instance that lacks database mirroring endpoint.
Creare un gruppo di disponibilitàCreate availability group CREATE AVAILABILITY GROUPCREATE AVAILABILITY GROUP Eseguire nell'istanza del server che dovrà ospitare la replica primaria iniziale.Execute on the server instance that is to host the initial primary replica.
Creare un join della replica secondaria al gruppo di disponibilitàJoin secondary replica to availability group ALTER AVAILABILITY GROUP nome_gruppo JOINALTER AVAILABILITY GROUP group_name JOIN Eseguire in ogni istanza del server in cui è ospitata una replica secondaria.Execute on each server instance that hosts a secondary replica.
Preparare il database secondarioPrepare the secondary database BACKUP e RESTORE.BACKUP and RESTORE. Creare i backup nell'istanza del server in cui è ospitata la replica primaria.Create backups on the server instance that hosts the primary replica.

Ripristinare i backup in ogni istanza del server che ospita una replica secondaria, utilizzando RESTORE WITH NORECOVERY.Restore backups on each server instance that hosts a secondary replica, using RESTORE WITH NORECOVERY.
Avviare la sincronizzazione dei dati creando un join di ogni database secondario al gruppo di disponibilitàStart data synchronization by joining each secondary database to availability group ALTER DATABASE _database SET HADR AVAILABILITY GROUP = nome_gruppoALTER DATABASE database_name SET HADR AVAILABILITY GROUP = group_name Eseguire in ogni istanza del server in cui è ospitata una replica secondaria.Execute on each server instance that hosts a secondary replica.

* Per eseguire un'attività specifica, connettersi alle istanze del server indicate.*To perform a given task, connect to the indicated server instance or instances.

Utilizzo di Transact-SQL per creare e configurare un gruppo di disponibilità Using Transact-SQL to Create and Configure an Availability Group

Nota

Per una procedura di configurazione di esempio contenente esempi di codice di ognuna di queste istruzioni Transact-SQLTransact-SQL , vedere Esempio: Configurazione di un gruppo di disponibilità in cui viene usata l'autenticazione di 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. Connettersi all'istanza del server che dovrà ospitare la replica primaria.Connect to the server instance that is to host the primary replica.

  2. Creare il gruppo di disponibilità usando l'istruzione CREATE AVAILABILITY GROUP Transact-SQLTransact-SQL .Create the availability group by using the CREATE AVAILABILITY GROUP Transact-SQLTransact-SQL statement.

  3. Creare un join della nuova replica secondaria al gruppo di disponibilità.Join the new secondary replica to the availability group. Per altre informazioni, vedere Creare un join di una replica secondaria a un gruppo di disponibilità (SQL Server).For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

  4. Per ogni database nel gruppo di disponibilità, creare un database secondario ripristinando i backup recenti del database primario, usando 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. Per altre informazioni, vedere Esempio: Configurazione di un gruppo di disponibilità in cui viene usata l'autenticazione di Windows (Transact-SQL), a partire dal passaggio per il ripristino del backup di database.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. Creare un join di ogni nuovo database secondario al gruppo di disponibilità.Join every new secondary database to the availability group. Per altre informazioni, vedere Creare un join di una replica secondaria a un gruppo di disponibilità (SQL Server).For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

Esempio: Configurazione di un gruppo di disponibilità in cui viene usata l'autenticazione di Windows Example: Configuring an Availability Group that Uses Windows Authentication

In questo esempio viene creata una procedura di configurazione Gruppi di disponibilità Always OnAlways On availability groups di esempio in cui viene utilizzato Transact-SQLTransact-SQL per configurare endpoint del mirroring del database in cui viene utilizzata l'autenticazione di Windows, nonché per creare e configurare un gruppo di disponibilità e i relativi database secondari.This example creates a sample Gruppi di disponibilità Always OnAlways 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.

In questo esempio sono incluse le sezioni seguenti:This example contains the following sections:

Prerequisiti per l'utilizzo della procedura di configurazione di esempio Prerequisites for Using the Sample Configuration Procedure

Questa procedura di esempio prevede i requisiti seguenti:This sample procedure has the following requirements:

  • Le istanze del server devono supportare Gruppi di disponibilità Always OnAlways On availability groups.The server instances must support Gruppi di disponibilità Always OnAlways On availability groups. Per altre informazioni, vedere Prerequisiti, restrizioni e consigli per i gruppi di disponibilità Always On (SQL Server).For more information, see Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

  • Devono essere presenti due database di esempio, MyDb1 e MyDb2, nell'istanza del server che ospiterà la replica primaria.Two sample databases, MyDb1 and MyDb2, must exist on the server instance that will host the primary replica. Gli esempi di codice seguenti consentono di creare e configurare questi due database, nonché di creare un backup completo di ognuno di essi.The following code examples create and configure these two databases and create a full backup of each. Eseguire questi esempi di codice nell'istanza del server in cui si desidera creare il gruppo di disponibilità di esempio.Execute these code examples on the server instance on which you intend to create the sample availability group. Questa istanza del server ospiterà la replica primaria iniziale del gruppo di disponibilità di esempio.This server instance will host the initial primary replica of the sample availability group.

    1. L'esempio Transact-SQLTransact-SQL seguente consente di creare questi database e di modificarli in modo da utilizzare il modello di recupero con registrazione completa: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. Nell'esempio di codice seguente viene creato un backup completo del database di MyDb1 e MyDb2.The following code example creates a full database backup of MyDb1 and MyDb2. In questo esempio di codice si usa una condivisione di backup fittizia, \\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]

Procedura di configurazione di esempio Sample Configuration Procedure

In questa configurazione di esempio sarà creata la replica di disponibilità in due istanze del server autonome i cui account del servizio vengono eseguiti in domini differenti, ma trusted,DOMAIN1 e DOMAIN2.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).

Nella tabella seguente sono riepilogati i valori utilizzati in questa configurazione di esempio.The following table summarizes the values used in this sample configuration.

Ruolo inizialeInitial role SistemaSystem Istanza host di SQL ServerSQL ServerHost SQL ServerSQL Server Instance
PrimariaPrimary COMPUTER01 AgHostInstance
SecondariSecondary COMPUTER02 Istanza predefinitaDefault instance.
  1. Creare un endpoint del mirroring del database denominato dbm_endpoint nell'istanza del server in cui si intende creare il gruppo di disponibilità. Si tratta di un'istanza denominata AgHostInstance in 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). In questo endpoint si usa la porta 7022.This endpoint uses port 7022. Si noti che la replica primaria sarà ospitata nell'istanza del server in cui si crea il gruppo di disponibilità.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. Creare un endpoint dbm_endpoint nell'istanza del server in cui sarà ospitata la replica secondaria. Si tratta dell'istanza del server predefinita in COMPUTER02.Create an endpoint dbm_endpoint on the server instance that will host the secondary replica (this is the default server instance on COMPUTER02). In questo endpoint si utilizza la porta 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. Nota

    Se gli account del servizio delle istanze del server in cui dovranno essere ospitate le repliche di disponibilità sono eseguiti con lo stesso account di dominio, questo passaggio non è necessario.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. Ignorarlo e passare direttamente al successivo.Skip it and go directly to the next step.

    Se gli account del servizio delle istanze del server vengono eseguiti con utenti di dominio diversi, in ogni istanza del server creare un account di accesso per l'altra istanza del server e concedere a questo account l'autorizzazione per l'accesso all'endpoint del mirroring del database locale.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.

    Nell'esempio di codice seguente vengono illustrate le istruzioni Transact-SQLTransact-SQL per la creazione di un account di accesso e la concessione dell'autorizzazione in un endpoint.The following code example shows the Transact-SQLTransact-SQL statements for creating a login and granting it permission on an endpoint. L'account di dominio dell'istanza del server remoto è rappresentato come nome_dominio\nome_utente.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. Nell'istanza del server in cui si trovano i database utente creare il gruppo di disponibilità.On the server instance where the user databases reside, create the availability group.

    Nell'esempio di codice seguente si crea un gruppo di disponibilità denominato MyAG nell'istanza del server in cui sono stati creati i database di esempio, MyDb1 e MyDb2.The following code example creates an availability group named MyAG on the server instance on which the sample databases, MyDb1 and MyDb2, were created. Si specifica innanzitutto l'istanza del server locale, AgHostInstance, su COMPUTER01 .The local server instance, AgHostInstance, on COMPUTER01 is specified first. Questa istanza ospiterà la replica primaria iniziale.This instance will host the initial primary replica. Si specifica un'istanza del server remota, l'istanza del server predefinita in COMPUTER02, in cui viene ospitata una replica secondaria.A remote server instance, the default server instance on COMPUTER02, is specified to host a secondary replica. Entrambe le repliche di disponibilità sono configurate per utilizzare la modalità con commit asincrono con failover manuale. Per le repliche con commit asincrono il failover manuale indica un failover forzato con possibile perdita di dati.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  
    

    Per altri esempi di codice Transact-SQLTransact-SQL per la creazione di un gruppo di disponibilità, vedere CREATE AVAILABILITY GROUP (Transact-SQL).For additional Transact-SQLTransact-SQL code examples of creating an availability group, see CREATE AVAILABILITY GROUP (Transact-SQL).

  5. Nell'istanza del server in cui viene ospitata la replica secondaria creare un join della replica secondaria al gruppo di disponibilità.On the server instance that hosts the secondary replica, join the secondary replica to the availability group.

    Nell'esempio di codice seguente viene creato un join della replica secondaria in COMPUTER02 al gruppo di disponibilità 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. Nell'istanza del server che ospita la replica secondaria creare i database secondari.On the server instance that hosts the secondary replica, create the secondary databases.

    L'esempio di codice seguente crea i database secondari MyDb1 e MyDb2 ripristinando i backup dei database tramite RESTORE WITH NORECOVERY.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. Nell'istanza del server in cui viene ospitata la replica primaria eseguire il backup del log delle transazioni in ognuno dei database primari.On the server instance that hosts the primary replica, back up the transaction log on each of the primary databases.

    Importante

    Quando si configura un gruppo di disponibilità reale, prima di eseguire questo backup del log è consigliabile sospendere le attività di backup del log per i database primari fino a quando non è stato creato un join dei database secondari corrispondenti al gruppo di disponibilità.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.

    Nell'esempio di codice seguente viene creato un backup del log delle transazioni in MyDb1 e 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  
    
    Suggerimento

    In genere, è necessario eseguire un backup del log in ogni database primario, quindi ripristinare tale backup nel database secondario corrispondente utilizzando WITH NORECOVERY.Typically, a log backup must be taken on each primary database and then restored on the corresponding secondary database (using WITH NORECOVERY). Questo backup del log potrebbe tuttavia non essere necessario se il database è stato appena creato e non è ancora stato eseguito alcun backup del log oppure se il modello di recupero è stato appena modificato da SIMPLE a 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. Nell'istanza del server che ospita la replica secondaria applicare i backup del log ai database secondari.On the server instance that hosts the secondary replica, apply log backups to the secondary databases.

    L'esempio di codice seguente applica backup ai database secondari MyDb1 e MyDb2 ripristinando i backup dei database tramite RESTORE WITH NORECOVERY.The following code example applies backups to MyDb1 and MyDb2 secondary databases by restoring database backups using RESTORE WITH NORECOVERY.

    Importante

    Quando si prepara un database secondario reale, è necessario applicare ogni backup del log eseguito dopo il backup del database da cui è stato creato il database secondario, a partire da quello meno recente e utilizzando sempre RESTORE 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. Naturalmente, se si ripristinano sia il backup completo del database che il backup differenziale, è necessario applicare solo i backup del log eseguiti dopo il backup differenziale.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. Nell'istanza del server che ospita la replica secondaria creare un join dei nuovi database secondari al gruppo di disponibilità.On the server instance that hosts the secondary replica, join the new secondary databases to the availability group.

    L'esempio di codice seguente crea i join dei database secondari MyDb1 e MyDb2 al gruppo di disponibilità 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  
    

Esempio di codice completo per la procedura di configurazione di esempio Complete Code Example for Sample Configuration Procedure

Nell'esempio seguente vengono uniti gli esempi di codice di tutti i passaggi della procedura di configurazione di esempio.The following example merges the code examples from all the steps of the sample configuration procedure. Nella tabella seguente sono riepilogati i valori segnaposto utilizzati nell'esempio di codice.The following table summarized the placeholder values used in this code example. Per ulteriori informazioni sui passaggi di questo esempio di codice, vedere Prerequisiti per l'utilizzo della procedura di configurazione di esempio e Procedura di configurazione di esempio, precedentemente in questo argomento.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.

SegnapostoPlaceholder DescrizioneDescription
\\FILESERVER\SQLbackups\\FILESERVER\SQLbackups Condivisione di backup fittizia.Fictional backup share.
\\FILESERVER\SQLbackups\MyDb1.bak\\FILESERVER\SQLbackups\MyDb1.bak File di backup per MyDb1.Backup file for MyDb1.
\\FILESERVER\SQLbackups\MyDb2.bak\\FILESERVER\SQLbackups\MyDb2.bak File di backup per MyDb2.Backup file for MyDb2.
70227022 Numero di porta assegnato a ogni endpoint del mirroring del database.Port number assigned to each database mirroring endpoint.
COMPUTER01\AgHostInstanceCOMPUTER01\AgHostInstance Istanza del server che ospita la replica primaria iniziale.Server instance that hosts the initial primary replica.
COMPUTER02COMPUTER02 Istanza del server in cui viene ospitata la replica secondaria iniziale.Server instance that hosts the initial secondary replica. Si tratta dell'istanza del server predefinita in COMPUTER02.This is the default server instance on COMPUTER02.
dbm_endpointdbm_endpoint Nome specificato per ogni endpoint del mirroring del database.Name specified for each database mirroring endpoint.
MyAGMyAG Nome del gruppo di disponibilità di esempio.Name of sample availability group.
MyDb1MyDb1 Nome del primo database di esempio.Name of first sample database.
MyDb2MyDb2 Nome del secondo database di esempio.Name of second sample database.
DOMAIN1\user1DOMAIN1\user1 Account del servizio dell'istanza del server che dovrà ospitare la replica primaria iniziale.Service account of the server instance that is to host the initial primary replica.
DOMAIN2\user2DOMAIN2\user2 Account del servizio dell'istanza del server in cui dovrà essere ospitata la replica secondaria iniziale.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 URL dell'endpoint dell'istanza AgHostInstance di SQL ServerSQL Server in COMPUTER01.Endpoint URL of the AgHostInstance instance of SQL ServerSQL Server on COMPUTER01.
TCP://COMPUTER02.Adventure-Works.com:5022TCP://COMPUTER02.Adventure-Works.com:5022 URL dell'endpoint dell'istanza predefinita di SQL ServerSQL Server in COMPUTER02.Endpoint URL of the default instance of SQL ServerSQL Server on COMPUTER02.
Nota

Per altri esempi di codice Transact-SQLTransact-SQL per la creazione di un gruppo di disponibilità, vedere 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  

Per configurare le proprietà della replica e del gruppo di disponibilitàTo configure availability group and replica properties

Vedere ancheSee Also

Endpoint del mirroring del database (SQL Server) The Database Mirroring Endpoint (SQL Server)
Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Listener del gruppo di disponibilità, connettività client e failover dell'applicazione (SQL Server) Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server)
Prerequisiti, restrizioni e consigli per i gruppi di disponibilità AlwaysOn (SQL Server)Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)