Configurare un gruppo di disponibilità a livello di lettura per SQL Server in LinuxConfigure a read-scale availability group for SQL Server on Linux

In questo argomento si applica a: SìSQL Server (solo Linux)nonDatabase SQL di AzurenonAzure SQL Data WarehousenonParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

È possibile configurare un gruppo di disponibilità a livello di lettura per SQL Server in Linux.You can configure a read-scale availability group for SQL Server on Linux. Esistono due architetture per i gruppi di disponibilità.There are two architectures for availability groups. Un'architettura a disponibilità elevata utilizza una Gestione cluster per assicurare la continuità aziendale migliorata.A high-availability architecture uses a cluster manager to provide improved business continuity. Questa architettura può includere anche repliche in scala di lettura.This architecture also can include read-scale replicas. Per creare l'architettura a disponibilità elevata, vedere configurare un gruppo di disponibilità AlwaysOn per SQL Server in Linux.To create the high-availability architecture, see Configure an AlwaysOn availability group for SQL Server on Linux.

Questo documento illustra come creare un gruppo di disponibilità a livello di lettura senza Gestione cluster di.This document explains how to create a read-scale availability group without a cluster manager. Questa architettura fornisce solo lettura scala.This architecture provides read-scale only. Non fornisce la disponibilità elevata.It doesn't provide high availability.

PrerequisitiPrerequisites

Prima di creare il gruppo di disponibilità, è necessario:Before you create the availability group, you need to:

  • Impostare l'ambiente in modo che tutti i server che ospiteranno le repliche di disponibilità possono comunicare.Set your environment so that all the servers that will host availability replicas can communicate.
  • Installare SQL Server.Install SQL Server.

Nota

In Linux, è necessario creare un gruppo di disponibilità prima di aggiungerlo come risorsa cluster da gestire con il cluster.On Linux, you must create an availability group before you add it as a cluster resource to be managed by the cluster. Questo documento propone un esempio di creazione del gruppo di disponibilità.This document provides an example that creates the availability group. Per le istruzioni di distribuzione specifiche creare il cluster e aggiungere il gruppo di disponibilità come risorsa cluster, vedere i collegamenti nella sezione "passaggi successivi"."For distribution-specific instructions to create the cluster and add the availability group as a cluster resource, see the links under "Next steps."

  1. Aggiornare il nome del computer per ogni host.Update the computer name for each host.

    Ogni nome di SQL Server deve:Each SQL Server name must be:

    • 15 caratteri o meno.15 characters or less.
    • Univoco all'interno della rete.Unique within the network.

    Per impostare il nome del computer, modificare /etc/hostname.To set the computer name, edit /etc/hostname. Lo script seguente consente di modificare /etc/hostname con vi:The following script lets you edit /etc/hostname with vi:

    sudo vi /etc/hostname
    
  2. Configurare il file hosts.Configure the hosts file.

    Nota

    Se i nomi host sono registrati con i relativi IP nel server DNS, è necessario effettuare i passaggi seguenti.If hostnames are registered with their IP in the DNS server, you don't need to do the following steps. Verificare che tutti i nodi faranno parte della configurazione del gruppo di disponibilità possono comunicare tra loro.Validate that all the nodes intended to be part of the availability group configuration can communicate with each other. (Un ping per il nome host deve rispondere con l'indirizzo IP corrispondente). Inoltre, assicurarsi che il file /etc/hosts non contiene un record che associa l'indirizzo IP localhost 127.0.0.1 con il nome host del nodo.(A ping to the hostname should reply with the corresponding IP address.) Also, make sure that the /etc/hosts file doesn't contain a record that maps the localhost IP address 127.0.0.1 with the hostname of the node.

    Il file hosts in ogni server contiene gli indirizzi IP e i nomi di tutti i server che faranno parte del gruppo di disponibilità.The hosts file on every server contains the IP addresses and names of all servers that will participate in the availability group.

    Il comando seguente restituisce l'indirizzo IP del server corrente:The following command returns the IP address of the current server:

    sudo ip addr show
    

    Aggiornare /etc/hosts.Update /etc/hosts. Lo script seguente consente di modificare /etc/hosts con vi:The following script lets you edit /etc/hosts with vi:

    sudo vi /etc/hosts
    

    L'esempio seguente illustra /etc/hosts su node1 con aggiunte per node1, node2 e node3.The following example shows /etc/hosts on node1 with additions for node1, node2, and node3. In questo documento, node1 fa riferimento al server che ospita la replica primaria.In this document, node1 refers to the server that hosts the primary replica. E node2 e Nodo3 fare riferimento ai server che ospitano le repliche secondarie.And node2 and node3 refer to servers that host the secondary replicas.

    127.0.0.1   localhost localhost4 localhost4.localdomain4
    ::1       localhost localhost6 localhost6.localdomain6
    10.128.18.12 node1
    10.128.16.77 node2
    10.128.15.33 node3
    

Installare SQL ServerInstall SQL Server

Installare SQL Server.Install SQL Server. I collegamenti seguenti puntano alle istruzioni di installazione di SQL Server per varie distribuzioni:The following links point to SQL Server installation instructions for various distributions:

Abilitare gruppi di disponibilità AlwaysOn e riavviare mssql-serverEnable AlwaysOn availability groups and restart mssql-server

Abilitare gruppi di disponibilità AlwaysOn in ogni nodo che ospita un'istanza di SQL Server.Enable AlwaysOn availability groups on each node that hosts a SQL Server instance. Riavviare quindi mssql-server.Then restart mssql-server. Eseguire lo script riportato di seguito:Run the following script:

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1
sudo systemctl restart mssql-server

Abilitare una sessione dell'evento AlwaysOn_healthEnable an AlwaysOn_health event session

Facoltativamente, è possibile abilitare eventi estesi con gruppi di disponibilità AlwaysOn facilitare la diagnosi della causa principale durante la risoluzione di un gruppo di disponibilità.You can optionally enable AlwaysOn availability groups extended events to help with root-cause diagnosis when you troubleshoot an availability group. Eseguire il comando seguente in ogni istanza di SQL Server:Run the following command on each instance of SQL Server:

ALTER EVENT SESSION  AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);
GO

Per ulteriori informazioni sulla sessione XE, vedere AlwaysOn eventi estesi.For more information about this XE session, see AlwaysOn extended events.

Creare un utente dell'endpoint di mirroring del databaseCreate a database mirroring endpoint user

Lo script di Transact-SQL seguente crea un account di accesso denominato dbm_login e un utente denominato dbm_user.The following Transact-SQL script creates a login named dbm_login and a user named dbm_user. Aggiornare lo script con una password complessa.Update the script with a strong password. Per creare l'utente dell'endpoint di mirroring del database, eseguire il comando seguente in tutte le istanze di SQL Server:To create the database mirroring endpoint user, run the following command on all SQL Server instances:

CREATE LOGIN dbm_login WITH PASSWORD = '**<1Sample_Strong_Password!@#>**';
CREATE USER dbm_user FOR LOGIN dbm_login;

Creare un certificatoCreate a certificate

Il servizio SQL Server in Linux usa i certificati per autenticare la comunicazione tra gli endpoint del mirroring.The SQL Server service on Linux uses certificates to authenticate communication between the mirroring endpoints.

Lo script Transact-SQL seguente crea una chiave master e un certificato.The following Transact-SQL script creates a master key and a certificate. Quindi esegue il backup del certificato e protegge il file con una chiave privata.It then backs up the certificate and secures the file with a private key. Aggiornare lo script con password complesse.Update the script with strong passwords. Connettersi all'istanza del Server SQL primario.Connect to the primary SQL Server instance. Per creare il certificato, eseguire lo script Transact-SQL seguente:To create the certificate, run the following Transact-SQL script:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**<Master_Key_Password>**';
CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';
BACKUP CERTIFICATE dbm_certificate
   TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
   WITH PRIVATE KEY (
           FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
           ENCRYPTION BY PASSWORD = '**<Private_Key_Password>**'
       );

A questo punto, la replica di SQL Server primaria dispone di un certificato in /var/opt/mssql/data/dbm_certificate.cer un at chiave privata e var/opt/mssql/data/dbm_certificate.pvk.At this point, your primary SQL Server replica has a certificate at /var/opt/mssql/data/dbm_certificate.cer and a private key at var/opt/mssql/data/dbm_certificate.pvk. Copiare questi due file nello stesso percorso in tutti i server che ospiteranno le repliche di disponibilità.Copy these two files to the same location on all servers that will host availability replicas. Usare l'utente mssql o concedere l'autorizzazione all'utente mssql per accedere a tali file.Use the mssql user, or give permission to the mssql user to access these files.

Nel server di origine, ad esempio, il comando seguente copia i file nel computer di destinazione.For example, on the source server, the following command copies the files to the target machine. Sostituire il **<node2>** valori con i nomi delle istanze di SQL Server che ospiteranno le repliche.Replace the **<node2>** values with the names of the SQL Server instances that will host the replicas.

cd /var/opt/mssql/data
scp dbm_certificate.* root@**<node2>**:/var/opt/mssql/data/

In ogni server di destinazione, assegnare l'autorizzazione per l'utente mssql per accedere al certificato.On each target server, give permission to the mssql user to access the certificate.

cd /var/opt/mssql/data
chown mssql:mssql dbm_certificate.*

Creare il certificato nei server secondariCreate the certificate on secondary servers

Lo script Transact-SQL seguente crea una chiave master e un certificato da backup creati nella replica primaria di SQL Server.The following Transact-SQL script creates a master key and a certificate from the backup that you created on the primary SQL Server replica. Inoltre, il comando autorizza l'utente ad accedere al certificato.The command also authorizes the user to access the certificate. Aggiornare lo script con password complesse.Update the script with strong passwords. La password di decrittografia è la stessa password utilizzata per creare il file .pvk in un passaggio precedente.The decryption password is the same password that you used to create the .pvk file in a previous step. Per creare il certificato, eseguire lo script seguente in tutti i server secondari:To create the certificate, run the following script on all secondary servers:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**<Master_Key_Password>**';
CREATE CERTIFICATE dbm_certificate   
    AUTHORIZATION dbm_user
    FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
    FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
    DECRYPTION BY PASSWORD = '**<Private_Key_Password>**'
            );

Creare endpoint di mirroring del database in tutte le replicheCreate the database mirroring endpoints on all replicas

Endpoint del mirroring del database utilizzano il protocollo TCP (Transmission Control) per inviare e ricevere messaggi tra istanze del server che fanno parte di sessioni di mirroring del database o ospitano repliche di disponibilità.Database mirroring endpoints use the Transmission Control Protocol (TCP) to send and receive messages between the server instances that participate in database mirroring sessions or host availability replicas. L'endpoint del mirroring del database è in attesa su un numero di porta TCP univoco.The database mirroring endpoint listens on a unique TCP port number. Il listener TCP richiede un indirizzo IP del listener.The TCP listener requires a listener IP address. L'indirizzo IP del listener deve essere un indirizzo IPv4.The listener IP address must be an IPv4 address. È inoltre possibile utilizzare 0.0.0.0.You can also use 0.0.0.0.

Lo script di Transact-SQL seguente crea un endpoint di ascolto denominato Hadr_endpoint per il gruppo di disponibilità.The following Transact-SQL script creates a listening endpoint named Hadr_endpoint for the availability group. Avvia l'endpoint e fornisce l'autorizzazione di connessione all'utente che è stato creato.It starts the endpoint and gives connection permission to the user that you created. Prima di eseguire lo script, sostituire i valori compresi tra **< ... >**.Before you run the script, replace the values between **< ... >**.

Aggiornare lo script Transact-SQL seguente per l'ambiente in tutte le istanze di SQL Server:Update the following Transact-SQL script for your environment on all SQL Server instances:

CREATE ENDPOINT [Hadr_endpoint]
    AS TCP (LISTENER_IP = (0.0.0.0), LISTENER_PORT = **<5022>**)
    FOR DATA_MIRRORING (
        ROLE = ALL,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];

Nota

Se è utilizzare SQL Server Express Edition in un nodo per ospitare una replica di sola configurazione, l'unico valore valido per ROLE è WITNESS.If you use SQL Server Express Edition on one node to host a configuration-only replica, the only valid value for ROLE is WITNESS. Eseguire lo script seguente in SQL Server Express Edition:Run the following script on SQL Server Express Edition:

CREATE ENDPOINT [Hadr_endpoint]
    AS TCP (LISTENER_IP = (0.0.0.0), LISTENER_PORT = **<5022>**)
    FOR DATA_MIRRORING (
        ROLE = WITNESS,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];

La porta TCP sul firewall deve essere aperta per la porta del listener.The TCP port on the firewall must be open for the listener port.

Importante

Per la versione di SQL Server 2017, l'unico metodo di autenticazione supportato per l'endpoint del mirroring del database è CERTIFICATE.For the SQL Server 2017 release, the only authentication method supported for the database mirroring endpoint is CERTIFICATE. Il WINDOWS verrà abilitata l'opzione in una versione futura.The WINDOWS option will be enabled in a future release.

Per ulteriori informazioni, vedere (SQL Server) di endpoint di mirroring del database.For more information, see The database mirroring endpoint (SQL Server).

Creare il gruppo di disponibilitàCreate the availability group

Creare il gruppo di disponibilità.Create the availability group. Set CLUSTER_TYPE = NONE.Set CLUSTER_TYPE = NONE. Inoltre, impostare ogni replica con FAILOVER_MODE = NONE.In addition, set each replica with FAILOVER_MODE = NONE. Le applicazioni client in esecuzione analitica o reporting carichi di lavoro possono direttamente la connessione ai database secondari.Client applications running analytics or reporting workloads can directly connect to the secondary databases. È anche possibile creare un elenco di routing di sola lettura.You also can create a read-only routing list. Le connessioni alla replica primaria in avanti leggere le richieste di connessione a ognuna delle repliche secondarie della lista di distribuzione in uno schema round-robin.Connections to the primary replica forward read connection requests to each of the secondary replicas from the routing list in a round-robin fashion.

Lo script Transact-SQL seguente crea un gruppo di disponibilità denominato ag1.The following Transact-SQL script creates an availability group named ag1. Lo script consente di configurare le repliche del gruppo di disponibilità con SEEDING_MODE = AUTOMATIC.The script configures the availability group replicas with SEEDING_MODE = AUTOMATIC. Questa impostazione, SQL Server creare automaticamente il database in ciascun server secondario dopo averlo aggiunto al gruppo di disponibilità.This setting causes SQL Server to automatically create the database on each secondary server after it is added to the availability group. Aggiornare lo script seguente per l'ambiente.Update the following script for your environment. Sostituire il **<node1>** e **<node2>** valori con i nomi delle istanze di SQL Server che ospitano le repliche.Replace the **<node1>** and **<node2>** values with the names of the SQL Server instances that host the replicas. Sostituire il **<5022>** valore con la porta è impostata per l'endpoint.Replace the **<5022>** value with the port you set for the endpoint. Nella replica primaria di SQL Server, eseguire lo script di Transact-SQL seguente:Run the following Transact-SQL script on the primary SQL Server replica:

CREATE AVAILABILITY GROUP [ag1]
    WITH (CLUSTER_TYPE = NONE)
    FOR REPLICA ON
        N'**<node1>**' WITH (
            ENDPOINT_URL = N'tcp://**<node1>:**<5022>**',
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
                    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
            ),
        N'**<node2>**' WITH ( 
            ENDPOINT_URL = N'tcp://**<node2>**:**<5022>**', 
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
            SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
            );

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

Creare un join al gruppo di disponibilità secondaria SQL ServerJoin secondary SQL Servers to the availability group

Lo script Transact-SQL seguente viene aggiunto un server a un gruppo di disponibilità denominato ag1.The following Transact-SQL script joins a server to an availability group named ag1. Aggiornare lo script per l'ambiente.Update the script for your environment. In ogni replica secondaria di SQL Server, eseguire lo script Transact-SQL seguente per aggiungere il gruppo di disponibilità:On each secondary SQL Server replica, run the following Transact-SQL script to join the availability group:

ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

Aggiungere un database al gruppo di disponibilitàAdd a database to the availability group

Verificare che il database a cui che aggiungere il gruppo di disponibilità è in modalità di recupero con registrazione completa e dispone di un backup del log valido.Ensure that the database you add to the availability group is in full recovery mode and has a valid log backup. Se si tratta di un database di prova o di un database appena creato, eseguire un backup del database.If this is a test database or a newly created database, take a database backup. Nel Server SQL primario, eseguire lo script di Transact-SQL seguente per creare ed eseguire il backup di un database denominato db1:On the primary SQL Server, run the following Transact-SQL script to create and back up a database called db1:

CREATE DATABASE [db1];
ALTER DATABASE [db1] SET RECOVERY FULL;
BACKUP DATABASE [db1] 
   TO DISK = N'/var/opt/mssql/data/db1.bak';

Nella replica primaria di SQL Server, eseguire lo script di Transact-SQL seguente per aggiungere un database denominato db1 a un gruppo di disponibilità denominato ag1:On the primary SQL Server replica, run the following Transact-SQL script to add a database called db1 to an availability group called ag1:

ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];

Verificare che il database sia creato nei server secondariVerify that the database is created on the secondary servers

In ogni replica secondaria di SQL Server, eseguire la query seguente per verificare se il db1 database è stato creato e sincronizzazione:On each secondary SQL Server replica, run the following query to see if the db1 database was created and is synchronized:

SELECT * FROM sys.databases WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;

Questo gruppo di disponibilità non è una configurazione a disponibilità elevata.This availability group isn't a high-availability configuration. Se è necessaria la disponibilità elevata, seguire le istruzioni in configurare un gruppo di disponibilità AlwaysOn per SQL Server in Linux.If you need high availability, follow the instructions at Configure an AlwaysOn availability group for SQL Server on Linux. In particolare, creare il gruppo di disponibilità con CLUSTER_TYPE=WSFC (in Windows) o CLUSTER_TYPE=EXTERNAL (in Linux).Specifically, create the availability group with CLUSTER_TYPE=WSFC (in Windows) or CLUSTER_TYPE=EXTERNAL (in Linux). Quindi integrare con un gestore cluster utilizzando uno Windows Server failover clustering in Windows o Pacemaker in Linux.Then integrate with a cluster manager by using either Windows Server failover clustering on Windows or Pacemaker on Linux.

Connettersi a repliche secondarie di sola letturaConnect to read-only secondary replicas

Esistono due modi per connettersi a repliche secondarie di sola lettura.There are two ways to connect to read-only secondary replicas. Le applicazioni possono connettersi direttamente all'istanza di SQL Server che ospita la replica secondaria ed eseguire query sui database.Applications can connect directly to the SQL Server instance that hosts the secondary replica and query the databases. È inoltre possibile utilizzare routing di sola lettura, che richiede un listener.They also can use read-only routing, which requires a listener.

Eseguire il failover della replica primaria in un gruppo di disponibilità per scalabilità in letturaFail over the primary replica on a read-scale availability group

Ogni gruppo di disponibilità include solo una replica primaria, cheEach availability group has only one primary replica. consente operazioni di lettura e scrittura.The primary replica allows reads and writes. Per modificare la replica primaria, è possibile eseguire il failover.To change which replica is primary, you can fail over. In un gruppo di disponibilità per disponibilità elevata, il processo di failover è automatizzato da Gestione cluster.In an availability group for high availability, the cluster manager automates the failover process. In un gruppo di disponibilità con scalabilità in lettura, il processo di failover è invece manuale.In a read-scale availability group, the failover process is manual.

Esistono due modi per eseguire il failover la replica primaria in un gruppo di disponibilità a livello di lettura:There are two ways to fail over the primary replica in a read-scale availability group:

  • Failover manuale forzato con perdita di datiForced manual failover with data loss
  • Failover manuale senza perdita di datiManual failover without data loss

Failover manuale forzato con perdita di datiForced manual failover with data loss

Utilizzare questo metodo quando la replica primaria non è disponibile e non può essere recuperata.Use this method when the primary replica isn't available and can't be recovered.

Per forzare il failover con perdita di dati, connettersi all'istanza di SQL Server che ospita la replica secondaria di destinazione ed eseguire:To force failover with data loss, connect to the SQL Server instance that hosts the target secondary replica and run:

ALTER AVAILABILITY GROUP [ag1] FORCE_FAILOVER_ALLOW_DATA_LOSS;

Failover manuale senza perdita di datiManual failover without data loss

Usare questo metodo quando la replica primaria è disponibile, ma è necessario modificare temporaneamente o definitivamente la configurazione e l'istanza SQL Server che ospita la replica primaria.Use this method when the primary replica is available, but you need to temporarily or permanently change the configuration and change the SQL Server instance that hosts the primary replica. Prima di eseguire il failover manuale, assicurarsi che la replica secondaria di destinazione viene aggiornata per evitare la perdita di dati.Before you issue the manual failover, ensure that the target secondary replica is up to date to avoid potential data loss.

Per eseguire manualmente il failover senza perdita di dati:To manually fail over without data loss:

  1. Verificare la replica secondaria di destinazione SYNCHRONOUS_COMMIT.Make the target secondary replica SYNCHRONOUS_COMMIT.

    ALTER AVAILABILITY GROUP [ag1] 
         MODIFY REPLICA ON N'**<node2>*' 
         WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
    
  2. Eseguire la query seguente per identificare che le transazioni attive vengano eseguito il commit per la replica primaria e almeno una replica secondaria asincrona:Run the following query to identify that active transactions are committed to the primary replica and at least one synchronous secondary replica:

    SELECT ag.name, 
       drs.database_id, 
       drs.group_id, 
       drs.replica_id, 
       drs.synchronization_state_desc, 
       ag.sequence_number
    FROM sys.dm_hadr_database_replica_states drs, sys.availability_groups ag
    WHERE drs.group_id = ag.group_id; 
    

    La replica secondaria è sincronizzata quando synchronization_state_desc è SYNCHRONIZED.The secondary replica is synchronized when synchronization_state_desc is SYNCHRONIZED.

  3. Aggiornamento REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT su 1.Update REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1.

    Lo script seguente imposta REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT su 1 in un gruppo di disponibilità denominato ag1.The following script sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1 on an availability group named ag1. Prima di eseguire lo script seguente, sostituire ag1 con il nome del gruppo di disponibilità:Before you run the following script, replace ag1 with the name of your availability group:

    ALTER AVAILABILITY GROUP [ag1] 
         SET REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1;
    

    Questa impostazione assicura che ogni transazione attiva viene eseguito il commit per la replica primaria e almeno una replica secondaria asincrona.This setting ensures that every active transaction is committed to the primary replica and at least one synchronous secondary replica.

  4. Abbassare di livello la replica primaria a una replica secondaria.Demote the primary replica to a secondary replica. Dopo la replica primaria viene abbassato di livello, è in sola lettura.After the primary replica is demoted, it's read-only. Eseguire questo comando nell'istanza di SQL Server che ospita la replica primaria per aggiornare il ruolo SECONDARY:Run this command on the SQL Server instance that hosts the primary replica to update the role to SECONDARY:

    ALTER AVAILABILITY GROUP [ag1] 
         SET (ROLE = SECONDARY); 
    
  5. Alzare il livello della replica secondaria di destinazione a replica primaria.Promote the target secondary replica to primary.

    ALTER AVAILABILITY GROUP ag1 FORCE_FAILOVER_ALLOW_DATA_LOSS; 
    

    Nota

    Per eliminare un gruppo di disponibilità, utilizzare DROP AVAILABILITY GROUP.To delete an availability group, use DROP AVAILABILITY GROUP. Per un gruppo di disponibilità creato con CLUSTER_TYPE NONE o esterno, il comando deve essere eseguito in tutte le repliche che fanno parte del gruppo di disponibilità.For an availability group created with CLUSTER_TYPE NONE or EXTERNAL, the command must be executed on all replicas that are part of the availability group.

Passaggi successiviNext steps