Creare un gruppo di disponibilità (SQL Server PowerShell)Create an Availability Group (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.This topic describes how to use PowerShell cmdlets to create and configure an Always On availability group by using 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.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, which 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'uso dei cmdlet di PowerShell, è possibile usare la procedura guidata Crea gruppo di disponibilità o Transact-SQLTransact-SQL.As an alternative to using PowerShell cmdlets, you can use the Create Availability Group wizard or 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).For more information, see Use the New Availability Group Dialog Box (SQL Server Management Studio) or Create an Availability Group (Transact-SQL).

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 host di SQL ServerSQL Server si trovino ognuna in un nodo WSCF (Windows Server Failover Clustering) diverso di un singolo cluster di failover WSFC.Before creating an availability group, verify that the host instances of SQL ServerSQL Server each resides on a different Windows Server Failover Clustering (WSFC) node of a single WSFC failover cluster. 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.Also, verify that your server instances met the other server-instance prerequisites and that all of the other Gruppi di disponibilità Always OnAlways On availability groups requirements are meet and that you are aware of the recommendations. Per altre informazioni, si consiglia di leggere Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (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 cmdlet di PowerShell corrispondenti Summary of Tasks and Corresponding PowerShell Cmdlets

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.The following table lists the basic tasks involved in configuring an availability group and indicates those that are supported by PowerShell cmdlets. È 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 Cmdlet di PowerShell (se disponibile) o istruzione Transact-SQLPowerShell Cmdlets (if Available) or Transact-SQL Statement 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) New-SqlHadrEndPointNew-SqlHadrEndPoint 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.

Nota: per modificare un endpoint del mirroring del database esistente, usare Set-SqlHadrEndpoint.Note: To alter an existing database mirroring endpoint, use Set-SqlHadrEndpoint.
Creare un gruppo di disponibilitàCreate availability group 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à.First, use the New-SqlAvailabilityReplica cmdlet with the -AsTemplate parameter to create an in-memory availability-replica object for each of the two availability replicas that you plan to include in the availability group.

Creare quindi il gruppo di disponibilità tramite il cmdlet New-SqlAvailabilityGroup e facendo riferimento agli oggetti replica di disponibilità.Then, create the availability group by using the New-SqlAvailabilityGroup cmdlet and referencing your availability-replica objects.
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 Join-SqlAvailabilityGroupJoin-SqlAvailabilityGroup Eseguire in ogni istanza del server in cui è ospitata una replica secondaria.Execute on each server instance that is hosts a secondary replica.
Preparare il database secondarioPrepare the secondary database Backup-SqlDatabase e Restore-SqlDatabaseBackup-SqlDatabase and Restore-SqlDatabase 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 in cui è ospitata una replica secondaria, usando il parametro di ripristino NoRecovery .Restore backups on each server instance that hosts a secondary replica, using the NoRecovery restore parameter. 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 .If the file paths differ between the computers that host the primary replica and the target secondary replica, also use the RelocateFile restore parameter.
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 Add-SqlAvailabilityDatabaseAdd-SqlAvailabilityDatabase 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, impostare la directory (cd) sull'istanza o sulle istanze del server indicate.*To perform a given task, change directory (cd) to the indicated server instance or instances.

Per impostare e usare il provider PowerShell per SQL Server To Set Up and Use the SQL Server PowerShell Provider

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

Nota

Per visualizzare la sintassi e un esempio di un cmdlet specifico, usare il cmdlet Get-Help nell'ambiente SQL ServerSQL Server PowerShell.To view the syntax and an example of a given cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. Per altre informazioni, vedere Get Help SQL Server PowerShell.For more information, see Get Help SQL Server PowerShell.

  1. Spostarsi nella directory (cd) dell'istanza del server che deve ospitare la replica primaria.Change directory (cd) to the server instance that is to host the primary replica.

  2. Creare un oggetto replica di disponibilità in memoria per la replica primaria.Create an in-memory availability-replica object for the primary replica.

  3. Creare un oggetto replica di disponibilità in memoria per ognuna delle repliche secondarie.Create an in-memory availability-replica object for each of the secondary replicas.

  4. Creare il gruppo di disponibilità.Create the availability group.

    Nota

    La lunghezza massima consentita per il nome del gruppo di disponibilità è 128 caratteri.The maximum length for an availability group name is 128 characters.

  5. 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).

  6. 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.

  7. 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).

  8. Facoltativamente, usare il comando dir di Windows per verificare il contenuto del nuovo gruppo di disponibilità.Optionally, use the Windows dir command to verify the contents of the new availability group.

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.If the SQL ServerSQL Server service accounts of the server instances run under different domain user accounts, on each server instance, create a login for the other server instance and grant this login CONNECT permission to the local database mirroring endpoint.

Esempio: Utilizzo di PowerShell per creare un gruppo di disponibilità Example: Using PowerShell to Create an Availability Group

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à.The following PowerShell example creates and configures a simple availability group named MyAG with two availability replicas and one availability database. Esempio:The example:

  1. Viene eseguito il backup di MyDatabase e del relativo log delle transazioni.Backs up MyDatabase and its transaction log.

  2. Ripristina MyDatabase e il relativo log delle transazioni, usando l'opzione -NoRecovery .Restores MyDatabase and its transaction log, using the -NoRecovery option.

  3. Viene creata una rappresentazione in memoria della replica primaria, che sarà ospitata dall'istanza locale di SQL ServerSQL Server (denominata PrimaryComputer\Instance).Creates an in-memory representation of the primary replica, which will be hosted by the local instance of SQL ServerSQL Server (named 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).Creates an in-memory representation of the secondary replica, which will be hosted by an instance of SQL ServerSQL Server (named SecondaryComputer\Instance).

  5. Viene creato un nuovo gruppo di disponibilità denominato MyAG.Creates an availability group named MyAG.

  6. Viene creato un join della replica secondaria al gruppo di disponibilità.Joins the secondary replica to the availability group.

  7. Viene creato un join del database secondario al gruppo di disponibilità.Joins the secondary database to the availability group.

# 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"  

Per configurare un'istanza del server per i gruppi di disponibilità AlwaysOnTo configure a server instance for Always On Availability Groups

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)