Creare un gruppo di disponibilità (SQL Server PowerShell)

In questo argomento si illustra come usare i cmdlet di PowerShell per creare e configurare un gruppo di disponibilità AlwaysOn usando PowerShell in SQL Server 2017SQL Server 2017. Un gruppo di disponibilità permette di definire un set di database utente di cui sarà eseguito il failover come unità singola e un set di partner di failover, noti come repliche di disponibilità, che supportano il failover.

Nota

Per un'introduzione ai gruppi di disponibilità, vedere Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server).

Nota

In alternativa all'uso dei cmdlet di PowerShell, è possibile usare la procedura guidata Crea gruppo di disponibilità o Transact-SQLTransact-SQL. Per altre informazioni, vedere Usare la finestra di dialogo Nuovo gruppo di disponibilità ( SQL Server Management Studio ) o Creare un gruppo di disponibilità ( Transact-SQL ).

Prima di iniziare

Prima di iniziare a creare il primo gruppo di disponibilità, è consigliabile leggere questa sezione.

Prerequisiti, restrizioni e raccomandazioni

  • Prima di creare un gruppo di disponibilità, verificare che le istanze host di SQL ServerSQL Server si trovino ognuna in un nodo WSCF (Windows Server Failover Clustering) diverso di un singolo cluster di failover WSFC. Inoltre, verificare che le istanze del server abbiano soddisfatto gli altri prerequisiti dell'istanza del server, che tutti gli altri requisiti di Gruppi di disponibilità Always OnAlways On availability groups siano soddisfatti e che si tengano presenti i consigli. Per altre informazioni, si consiglia di leggere Prerequisiti, restrizioni e consigli per i gruppi di disponibilità AlwaysOn (SQL Server).

Sicurezza

Autorizzazioni

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.

Riepilogo delle attività e cmdlet di PowerShell corrispondenti

Nella tabella seguente sono elencate le attività di base necessarie per la configurazione di un gruppo di disponibilità e sono indicate le attività supportate dai cmdlet di PowerShell. È necessario eseguire le attività Gruppi di disponibilità Always OnAlways On availability groups nell'ordine con cui sono elencate nella tabella.

Attività Cmdlet di PowerShell (se disponibile) o istruzione Transact-SQL Posizione in cui eseguire l'attività\*
Creare un endpoint del mirroring del database (una volta per ogni istanza di SQL ServerSQL Server) New-SqlHadrEndPoint Eseguire in ogni istanza del server in cui non è presente l'endpoint del mirroring del database.

Nota: per modificare un endpoint del mirroring del database esistente, usare Set-SqlHadrEndpoint.
Creare un gruppo di disponibilità Usare innanzitutto il cmdlet New-SqlAvailabilityReplica con il parametro -AsTemplate per creare un oggetto della replica di disponibilità in memoria per ognuna delle due repliche di disponibilità da includere nel gruppo di disponibilità.

Creare quindi il gruppo di disponibilità tramite il cmdlet New-SqlAvailabilityGroup e facendo riferimento agli oggetti replica di disponibilità.
Eseguire nell'istanza del server che dovrà ospitare la replica primaria iniziale.
Creare un join della replica secondaria al gruppo di disponibilità Join-SqlAvailabilityGroup Eseguire in ogni istanza del server in cui è ospitata una replica secondaria.
Preparare il database secondario Backup-SqlDatabase e Restore-SqlDatabase Creare i backup nell'istanza del server in cui è ospitata la replica primaria.

Ripristinare i backup in ogni istanza del server in cui è ospitata una replica secondaria, usando il parametro di ripristino NoRecovery . Se i percorsi di file differiscono tra i computer in cui sono ospitate la replica primaria e la replica secondaria di destinazione, usare anche il parametro di ripristino RelocateFile .
Avviare la sincronizzazione dei dati creando un join di ogni database secondario al gruppo di disponibilità Add-SqlAvailabilityDatabase Eseguire in ogni istanza del server in cui è ospitata una replica secondaria.

*Per eseguire un'attività specifica, impostare la directory (cd) sull'istanza o sulle istanze del server indicate.

Uso di PowerShell per creare e configurare un gruppo di disponibilità

Nota

Per visualizzare la sintassi e un esempio di un cmdlet specifico, usare il cmdlet Get-Help nell'ambiente SQL ServerSQL Server PowerShell. Per altre informazioni, vedere Get Help SQL Server PowerShell.

  1. Spostarsi nella directory (cd) dell'istanza del server che deve ospitare la replica primaria.

  2. Creare un oggetto replica di disponibilità in memoria per la replica primaria.

  3. Creare un oggetto replica di disponibilità in memoria per ognuna delle repliche secondarie.

  4. Creare il gruppo di disponibilità.

    Nota

    La lunghezza massima consentita per il nome del gruppo di disponibilità è 128 caratteri.

  5. Creare un join della nuova replica secondaria al gruppo di disponibilità. Per altre informazioni, vedere Creare un join di una replica secondaria a un gruppo di disponibilità (SQL Server).

  6. Per ogni database nel gruppo di disponibilità, creare un database secondario ripristinando i backup recenti del database primario, usando RESTORE WITH NORECOVERY.

  7. Creare un join di ogni nuovo database secondario al gruppo di disponibilità. Per altre informazioni, vedere Creare un join di una replica secondaria a un gruppo di disponibilità (SQL Server).

  8. Facoltativamente, usare il comando dir di Windows per verificare il contenuto del nuovo gruppo di disponibilità.

Nota

Se gli account del servizio SQL ServerSQL Server delle istanze del server sono eseguiti con account utente 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 CONNECT per l'endpoint del mirroring del database locale.

Esempio: Utilizzo di PowerShell per creare un gruppo di disponibilità

Nell'esempio di PowerShell seguente si crea e si configura un gruppo di disponibilità semplice denominato MyAG con due repliche di disponibilità e un database di disponibilità. Esempio:

  1. Viene eseguito il backup di MyDatabase e del relativo log delle transazioni.

  2. Ripristina MyDatabase e il relativo log delle transazioni, usando l'opzione -NoRecovery.

  3. Viene creata una rappresentazione in memoria della replica primaria, che sarà ospitata dall'istanza locale di SQL ServerSQL Server (denominata PrimaryComputer\Instance).

  4. Viene creata una rappresentazione in memoria della replica secondaria, che sarà ospitata da un'istanza di SQL ServerSQL Server (denominata SecondaryComputer\Instance).

  5. Viene creato un nuovo gruppo di disponibilità denominato MyAG.

  6. Viene creato un join della replica secondaria al gruppo di disponibilità.

  7. Viene creato un join del database secondario al gruppo di disponibilità.

# Backup my database and its log on the primary  
Backup-SqlDatabase `  
    -Database "MyDatabase" `  
    -BackupFile "\\share\backups\MyDatabase.bak" `  
    -ServerInstance "PrimaryComputer\Instance"  

Backup-SqlDatabase `  
    -Database "MyDatabase" `  
    -BackupFile "\\share\backups\MyDatabase.log" `  
    -ServerInstance "PrimaryComputer\Instance" `  
    -BackupAction Log   

# Restore the database and log on the secondary (using NO RECOVERY)  
Restore-SqlDatabase `  
    -Database "MyDatabase" `  
    -BackupFile "\\share\backups\MyDatabase.bak" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -NoRecovery  

Restore-SqlDatabase `  
    -Database "MyDatabase" `  
    -BackupFile "\\share\backups\MyDatabase.log" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -RestoreAction Log `  
    -NoRecovery  

# Create an in-memory representation of the primary replica.  
$primaryReplica = New-SqlAvailabilityReplica `  
    -Name "PrimaryComputer\Instance" `  
    -EndpointURL "TCP://PrimaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  

# Create an in-memory representation of the secondary replica.  
$secondaryReplica = New-SqlAvailabilityReplica `  
    -Name "SecondaryComputer\Instance" `  
    -EndpointURL "TCP://SecondaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  

# Create the availability group  
New-SqlAvailabilityGroup `  
    -Name "MyAG" `  
    -Path "SQLSERVER:\SQL\PrimaryComputer\Instance" `  
    -AvailabilityReplica @($primaryReplica,$secondaryReplica) `  
    -Database "MyDatabase"  

# Join the secondary replica to the availability group.  
Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\SecondaryComputer\Instance" -Name "MyAG"  

# Join the secondary database to the availability group.  
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\MyAG" -Database "MyDatabase"  

Attività correlate

Per configurare un'istanza del server per i gruppi di disponibilità AlwaysOn

Contenuto correlato

Vedere anche

Endpoint del mirroring del database (SQL Server)
Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)