CREATE AVAILABILITY GROUP (Transact-SQL)

Crea un nuovo gruppo di disponibilità, se l'istanza di SQL Server è abilitata per la funzionalità Gruppi di disponibilità AlwaysOn.

Nota importanteImportante

Eseguire CREATE AVAILABILITY GROUP nell'istanza di SQL Server che si desidera utilizzare come replica primaria iniziale del nuovo gruppo di disponibilità. Questa istanza del server deve trovarsi in un nodo WSFC (Windows Server Failover Clustering).

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

CREATE AVAILABILITY GROUP group_name
   WITH (<with_option_spec> [ ,...n ] )
   FOR [ DATABASE database_name [ ,...n ] ]
   REPLICA ON <add_replica_spec> [ ,...n ]
   [ LISTENER ‘dns_name’ ( <listener_option> ) ]
[ ; ]

<with_option_spec>::= 
    AUTOMATED_BACKUP_PREFERENCE = { PRIMARY | SECONDARY_ONLY| SECONDARY | NONE }
  | FAILURE_CONDITION_LEVEL  = { 1 | 2 | 3 | 4 | 5 } 
  | HEALTH_CHECK_TIMEOUT = milliseconds 

<add_replica_spec>::=
  <server_instance> WITH
    (
       ENDPOINT_URL = 'TCP://system-address:port',
       AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT },
       FAILOVER_MODE = { AUTOMATIC | MANUAL }
       [ , <add_replica_option> [ ,...n ] ]
    ) 

  <add_replica_option>::=
       BACKUP_PRIORITY = n
     | SECONDARY_ROLE ( { 
            [ ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } ] 
        [,] [ READ_ONLY_ROUTING_URL = 'TCP://system-address:port' ]
     } )
     | PRIMARY_ROLE ( { 
            [ ALLOW_CONNECTIONS = { READ_WRITE | ALL } ] 
        [,] [ READ_ONLY_ROUTING_LIST = { ( ‘<server_instance>’ [ ,...n ] ) | NONE } ]
     } )
     | SESSION_TIMEOUT = integer 

<listener_option> ::=
   {
      WITH DHCP [ ON ( <network_subnet_option> ) ]
    | WITH IP ( { ( <ip_address_option> ) } [ , ...n ] ) [ , PORT = listener_port ]
   }

  <network_subnet_option> ::=
     ‘four_part_ipv4_address’, ‘four_part_ipv4_mask’  

  <ip_address_option> ::=
     { 
        ‘four_part_ipv4_address’, ‘four_part_ipv4_mask’
      | ‘ipv6_address’
     }

Argomenti

  • group_name
    Specifica il nome del nuovo gruppo di disponibilità. group_name deve essere un identificatore di SQL Server valido e deve essere univoco in tutti i gruppi di disponibilità nel cluster WSFC. La lunghezza massima consentita per il nome del gruppo di disponibilità è 128 caratteri.

  • AUTOMATED_BACKUP_PREFERENCE = { PRIMARY | SECONDARY_ONLY| SECONDARY | NONE }
    Specifica le preferenze per la modalità di valutazione della replica primaria da parte di un processo di backup nella scelta della posizione in cui eseguire i backup. È possibile generare uno script affinché un processo di backup specifico prenda in considerazione le preferenze di backup automatico. È importante comprendere che le preferenze non vengono applicate da SQL Server, pertanto non incidono sui backup ad hoc.

    I valori supportati sono i seguenti:

    • PRIMARY
      Specifica che i backup devono essere sempre eseguiti sulla replica primaria. Questa opzione è utile se sono necessarie funzionalità di backup, ad esempio la creazione di backup differenziali, che non sono supportate quando il backup viene eseguito su una replica secondaria.

      Nota importanteImportante

      Se si intende utilizzare il log shipping per preparare un qualsiasi database secondario per un gruppo di disponibilità, impostare la preferenza di backup automatico su Principale finché tutti i database secondari non saranno stati preparati e non ne sarà stato creato un join al gruppo di disponibilità.

    • SECONDARY_ONLY
      Specifica che i backup non devono mai essere eseguiti sulla replica primaria. Se la replica primaria è l'unica replica online, il backup non viene eseguito.

    • SECONDARY
      Specifica che i backup devono essere eseguiti su una replica secondaria tranne quando la replica primaria è l'unica replica online. In tal caso il backup deve essere eseguito sulla replica primaria. Si tratta del comportamento predefinito.

    • NONE
      Specifica che si preferisce che i processi di backup ignorino il ruolo delle repliche di disponibilità nella scelta della replica per l'esecuzione dei backup. Si noti che i processi di backup potrebbero valutare altri fattori, ad esempio la priorità di backup di ogni replica di disponibilità in combinazione con lo stato operativo e lo stato connesso.

    Nota importanteImportante

    Non è prevista l'applicazione dell'impostazione AUTOMATED_BACKUP_PREFERENCE. L'interpretazione di questa preferenza dipende dalla logica, se presente, tramite cui viene generato lo script nei processi di backup per i database in un determinato gruppo di disponibilità. L'impostazione relativa alla preferenza di backup automatico non ha alcun impatto sui backup ad hoc. Per ulteriori informazioni, vedere Configurare il backup su repliche di disponibilità (SQL Server).

    [!NOTA]

    Per visualizzare le preferenze di backup automatico di un gruppo di disponibilità esistente, selezionare la colonna automated_backup_preference o automated_backup_preference_desc della vista del catalogo sys.availability_groups. Inoltre, sys.fn_hadr_backup_is_preferred_replica (Transact-SQL) può essere utilizzato per determinare la replica di backup preferita. Questa funzione restituisce sempre 1 per almeno una delle repliche, anche quando AUTOMATED_BACKUP_PREFERENCE = NONE.

  • FAILURE_CONDITION_LEVEL = { 1 | 2 | 3 | 4 | 5 }
    Specifica le condizioni di errore che attivano un failover automatico per il gruppo di disponibilità. FAILURE_CONDITION_LEVEL viene impostato a livello di gruppo ma è rilevante solo sulle repliche di disponibilità configurate per la modalità di disponibilità con commit sincrono (AVAILIBILITY_MODE = SYNCHRONOUS_COMMIT). Inoltre, le condizioni di errore possono attivare un failover automatico solo se entrambe le repliche, primaria e secondaria, sono configurate per la modalità di failover automatico (FAILOVER_MODE = AUTOMATIC) e la replica secondaria è attualmente sincronizzata con la replica primaria.

    I livelli delle condizioni di errore (1-5) vanno dal livello 1, meno restrittivo, al livello 5, più restrittivo. Un livello di condizione specifico include tutti i livelli meno restrittivi. Il livello della condizione più restrittivo, ovvero il livello 5, include pertanto i quattro livelli della condizione meno restrittivi (1-4), il livello 4 include i livelli 1-3 e così via. Nella tabella seguente viene descritta la condizione di errore che corrisponde a ciascun livello.

    Livello

    Condizione di errore

    1

    Specifica che deve essere avviato un failover automatico quando si verifica una delle condizioni seguenti:

    • Il servizio SQL Server non è attivo.

    • Il lease del gruppo di disponibilità per la connessione al cluster WSFC scade poiché non viene ricevuto alcun acknowledgement dall'istanza del server. Per ulteriori informazioni, vedere Funzionamento: timeout lease di SQL Server AlwaysOn.

    2

    Specifica che deve essere avviato un failover automatico quando si verifica una delle condizioni seguenti:

    • L'istanza di SQL Server non si connette al cluster e viene superata la soglia HEALTH_CHECK_TIMEOUT specificata dall'utente del gruppo di disponibilità.

    • La replica di disponibilità si trova in uno stato di errore.

    3

    Specifica che deve essere avviato un failover automatico in caso di errori interni di SQL Server critici, ad esempio spinlock orfani, gravi violazioni dell'accesso in scrittura o dumping eccessivo.

    Questo è il comportamento predefinito.

    4

    Specifica che deve essere avviato un failover automatico in caso di errori interni di SQL Server con gravità moderata, ad esempio una condizione persistente di memoria insufficiente nel pool di risorse interno di SQL Server.

    5

    Specifica che deve essere avviato un failover automatico in caso di qualsiasi condizione di errore qualificata, tra cui:

    • Esaurimento dei thread di lavoro del motore SQL.

    • Rilevamento di un deadlock irrisolvibile.

    [!NOTA]

    L'assenza di risposta da un'istanza di SQL Server alle richieste del client non è rilevante per i gruppi di disponibilità.

    I valori FAILURE_CONDITION_LEVEL e HEALTH_CHECK_TIMEOUT definiscono criteri di failover flessibili per un gruppo specifico, fornendo un controllo granulare sulle condizioni che devono causare un failover automatico. Per ulteriori informazioni, vedere Criteri di failover flessibili per failover automatico di un gruppo di disponibilità (SQL Server).

  • HEALTH_CHECK_TIMEOUT = milliseconds
    Specifica il tempo di attesa, in millisecondi, per la restituzione delle informazioni sull'integrità del server da parte della stored procedure di sistema sp_server_diagnostics prima che il cluster WSFC presupponga che l'istanza del server sia lenta o bloccata. HEALTH_CHECK_TIMEOUT viene impostato a livello di gruppo ma è rilevante solo sulle repliche di disponibilità configurate per la modalità di disponibilità con commit sincrono e che supportano il failover automatico (AVAILIBILITY_MODE = SYNCHRONOUS_COMMIT). Inoltre, un timeout del controllo di integrità può attivare un failover automatico solo se entrambe le repliche, primaria e secondaria, sono configurate per la modalità di failover automatico (FAILOVER_MODE = AUTOMATIC) e la replica secondaria è attualmente sincronizzata con la replica primaria.

    Il valore predefinito di HEALTH_CHECK_TIMEOUT è 30000 millisecondi (30 secondi). Il valore minimo è 15000 millisecondi (15 secondi) e il valore massimo è 4294967295 millisecondi.

    Nota importanteImportante

    In sp_server_diagnostics non vengono eseguiti controlli di integrità a livello di database.

  • DATABASE database_name
    Specifica un elenco di uno o più database utente nell'istanza di SQL Server locale, cioè l'istanza del server in cui si desidera creare il gruppo di disponibilità. È possibile specificare più database per un gruppo di disponibilità, ma ogni database può appartenere a un solo gruppo di disponibilità. Per informazioni sul tipo di database che un gruppo di disponibilità può supportare, vedere Prerequisiti, restrizioni e consigli per i gruppi di disponibilità AlwaysOn (SQL Server). Per individuare i database locali già appartenenti a un gruppo di disponibilità, vedere la colonna replica_id nella vista del catalogo sys.databases.

    La clausola DATABASE è facoltativa. Se omessa, il nuovo gruppo di disponibilità sarà vuoto.

    Dopo aver creato il gruppo di disponibilità, sarà necessario connettersi a ogni istanza del server in cui è ospitata una replica secondaria, quindi preparare ciascun database secondario e aggiungerlo al gruppo di disponibilità. Per ulteriori informazioni, vedere Avviare lo spostamento dati su un database secondario AlwaysOn (SQL Server).

    [!NOTA]

    Successivamente sarà possibile aggiungere a un gruppo di disponibilità database idonei nell'istanza del server in cui è ospitata la replica primaria corrente. È inoltre possibile rimuovere un database da un gruppo di disponibilità. Per ulteriori informazioni, vedere ALTER AVAILABILITY GROUP (Transact-SQL).

  • REPLICA ON
    Specifica da una a cinque istanze di SQL Server per ospitare le repliche di disponibilità nel nuovo gruppo di disponibilità. Ogni replica viene specificata dall'indirizzo della relativa istanza del server seguito da una clausola WITH (…). È necessario specificare almeno l'istanza del server locale, che diventerà la replica primaria iniziale. È eventualmente possibile specificare anche un massimo di quattro repliche secondarie.

    È necessario creare un join di ogni replica secondaria al gruppo di disponibilità. Per ulteriori informazioni, vedere ALTER AVAILABILITY GROUP (Transact-SQL).

    [!NOTA]

    Se si specificano meno di quattro repliche secondarie quando si crea un gruppo di disponibilità, è possibile aggiungere in qualsiasi momento un'altra replica secondaria tramite l'istruzione Transact-SQL ALTER AVAILABILITY GROUP. È anche possibile utilizzare questa istruzione per rimuovere qualsiasi replica secondaria da un gruppo di disponibilità esistente.

  • <istanza_server>
    Specifica l'indirizzo dell'istanza di SQL Server in cui viene ospitata una replica. Il formato dell'indirizzo dipende dal fatto che l'istanza sia l'istanza predefinita o un'istanza denominata e se si tratti di un'istanza autonoma o un'istanza del cluster di failover (FCI), come segue:

    { 'system_name[\instance_name]' | 'FCI_network_name[\instance_name]' }

    I componenti di questo indirizzo sono i seguenti:

    • system_name
      Nome NetBIOS del computer in cui si trova l'istanza di destinazione di SQL Server. Il computer deve essere un nodo WSFC.

    • FCI_network_name
      Nome di rete utilizzato per accedere a un cluster di failover di SQL Server. Utilizzare questo nome se l'istanza del server partecipa come partner di failover di SQL Server. L'esecuzione di SELECT @@SERVERNAME in un'istanza del server FCI restituisce l'intera stringa 'FCI_network_name[\instance_name]', che corrisponde al nome completo della replica.

    • instance_name
      Nome di un'istanza di un server SQL Server ospitato da system_name o FCI_network_name e in cui è abilitato il servizio HADR. Per un'istanza del server predefinita, instance_name è facoltativo. Per il nome dell'istanza non viene fatta distinzione tra maiuscole e minuscole. In un'istanza del server autonoma questo nome del valore è lo stesso di quello per il valore restituito dall'esecuzione di SELECT @@SERVERNAME.

    • \
      Separatore utilizzato solo quando si specifica instance_name, per separarlo da system_name o FCI_network_name.

    Per informazioni sui prerequisiti per i nodi WSFC e le istanze del server, vedere Prerequisiti, restrizioni e consigli per i gruppi di disponibilità AlwaysOn (SQL Server).

  • ENDPOINT_URL = 'TCP://system-address:port'
    Specifica il percorso URL dell'endpoint del mirroring del database nell'istanza di SQL Server in cui verrà ospitata la replica di disponibilità in corso di definizione nella clausola REPLICA ON corrente.

    La clausola ENDPOINT_URL è obbligatoria. Per ulteriori informazioni, vedere Specifica dell'URL dell'endpoint quando si aggiunge o si modifica una replica di disponibilità (SQL Server).

  • 'TCP://system-address:port'
    Specifica un URL per definire un URL di endpoint o un URL di routing di sola lettura. I parametri URL sono i seguenti:

    • system-address
      Stringa, ad esempio un nome di sistema, un nome di dominio completo o un indirizzo IP, che identifica in modo univoco il computer di destinazione.

    • port
      Numero di porta associato all'endpoint del mirroring dell'istanza del server partner (per l'opzione ENDPOINT_URL) o numero di porta utilizzato dal Motore di database dell'istanza del server (per l'opzione READ_ONLY_ROUTING_URL).

  • AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT }
    Specifica se la replica primaria deve attendere la conferma della finalizzazione (scrittura) dei record del log su disco da parte della replica secondaria prima di poter eseguire il commit della transazione in un database primario specifico. Il commit delle transazioni in database diversi della stessa replica primaria può essere eseguito indipendentemente.

    • SYNCHRONOUS_COMMIT
      Specifica che la replica primaria esegue il commit delle transazioni solo dopo la finalizzazione nella replica secondaria (modalità con commit sincrono). È possibile specificare SYNCHRONOUS_COMMIT per un massimo di tre repliche, inclusa la replica primaria.

    • ASYNCHRONOUS_COMMIT
      Specifica che la replica primaria esegue il commit delle transazioni senza attendere la finalizzazione del log da parte della replica secondaria (modalità di disponibilità con commit sincrono). È possibile specificare ASYNCHRONOUS_COMMIT per un massimo di cinque repliche di disponibilità, inclusa la replica primaria.

    La clausola AVAILABILITY_MODE è obbligatoria. Per ulteriori informazioni, vedere Modalità di disponibilità (gruppi di disponibilità AlwaysOn).

  • FAILOVER_MODE = { AUTOMATIC | MANUAL }
    Specifica la modalità di failover della replica di disponibilità che si sta definendo.

    • AUTOMATIC
      Abilita il failover automatico. Questa opzione è supportata solo se si specifica anche AVAILABILITY_MODE = SYNCHRONOUS_COMMIT. È possibile specificare AUTOMATIC per due repliche di disponibilità, inclusa la replica primaria.

      [!NOTA]

      Le istanze del cluster di failover di SQL Server non supportano il failover automatico da gruppi di disponibilità, pertanto le replica di disponibilità ospitate da un'istanza del cluster di failover possono essere configurate solo per il failover manuale.

    • MANUAL
      Abilita il failover manuale pianificato o il failover manuale forzato (in genere denominato failover forzato) da parte dell'amministratore del database.

    La clausola FAILOVER_MODE è obbligatoria. I due tipi di failover manuale, failover manuale senza perdita di dati e failover forzato (con possibile perdita di dati), sono supportati a seconda delle diverse condizioni. Per ulteriori informazioni, vedere Failover e modalità di failover (gruppi di disponibilità AlwaysOn).

  • BACKUP_PRIORITY **=**n
    Specifica la priorità di esecuzione dei backup nella replica rispetto alle altre repliche nello stesso gruppo di disponibilità. Il valore è un numero intero compreso nell'intervallo 0-100. I valori hanno il significato seguente:

    • 1..100 indica che la replica di disponibilità potrebbe essere scelta per l'esecuzione dei backup. 1 indica la priorità più bassa e 100 indica la priorità più alta. Se BACKUP_PRIORITY = 1, la replica di disponibilità verrà scelta per l'esecuzione dei backup solo se non sono attualmente disponibili repliche di disponibilità con priorità più alta.

    • 0 indica che la replica di disponibilità non verrà mai scelta per l'esecuzione dei backup. Ciò si rivela utile, ad esempio, per una replica di disponibilità remota in cui non si desidera eseguire mai il failover dei backup.

    Per ulteriori informazioni, vedere Repliche secondarie attive: Backup in repliche secondarie (Gruppi di disponibilità AlwaysOn).

  • SECONDARY_ROLE ()
    Specifica le impostazioni specifiche di ruolo che verranno applicate se questa replica di disponibilità è attualmente proprietaria del ruolo secondario (ovvero ogni volta che è una replica secondaria). All'interno delle parentesi, specificare uno o entrambe opzioni per il ruolo secondario. Se si specificano entrambe, utilizzare un elenco delimitato da virgole.

    Le opzioni per il ruolo secondario sono le seguenti:

    • ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL }
      Specifica se i database di una determinata replica di disponibilità che esegue il ruolo secondario, ovvero che funge da replica secondaria, possono accettare connessioni dai client, ovvero:

      • NO
        Non sono consentite connessioni utente ai database secondari di questa replica. I database non sono disponibili per l'accesso in lettura. Si tratta del comportamento predefinito.

      • READ_ONLY
        Sono consentite solo connessioni ai database nella replica secondaria nei casi in cui la proprietà Finalità dell'applicazione è impostata su ReadOnly. Per ulteriori informazioni su questa proprietà, vedere Utilizzo delle parole chiave delle stringhe di connessione con SQL Server Native Client.

      • ALL
        Sono consentite tutte le connessioni ai database nella replica secondaria per l'accesso in sola lettura.

      Per ulteriori informazioni, vedere Repliche secondarie attive: Repliche secondarie leggibili (Gruppi di disponibilità AlwaysOn).

    • READ_ONLY_ROUTING_URL = 'TCP://system-address:port'
      Specifica l'URL da utilizzare per il routing delle richieste di connessione con finalità di lettura a questa replica di disponibilità. Si tratta dell'URL sul quale è in ascolto il motore di database di SQL Server. In genere, l'istanza predefinita del motore di database di SQL Server è in ascolto sulla porta TCP 1433.

      Per un'istanza denominata, è possibile ottenere il numero di porta eseguendo una query sulle colonne port e type_desc della DMV sys.dm_tcp_listener_states. Nell'istanza del server viene utilizzato il listener Transact-SQL (type_desc = 'TSQL').

      Per ulteriori informazioni sul calcolo dell'URL di routing di sola lettura per una replica di disponibilità, vedere Calcolo di read_only_routing_url per AlwaysOn.

      [!NOTA]

      Per un'istanza denominata di SQL Server, il listener Transact-SQL deve essere configurato per utilizzare una porta specifica. Per ulteriori informazioni, vedere Configurazione di un server per l'attesa su una porta TCP specifica (Gestione configurazione SQL Server).

  • PRIMARY_ROLE ()
    Specifica le impostazioni specifiche di ruolo che verranno applicate se questa replica di disponibilità è attualmente proprietaria del ruolo primario (ovvero ogni volta che è una replica primaria). All'interno delle parentesi, specificare uno o entrambe opzioni per il ruolo primario. Se si specificano entrambe, utilizzare un elenco delimitato da virgole.

    Le opzioni per il ruolo primario sono le seguenti:

    • ALLOW_CONNECTIONS = { READ_WRITE | ALL }
      Specifica il tipo di connessione che i database di una determinata replica di disponibilità che esegue il ruolo primario, ovvero che funge da replica primaria, possono accettare dai client, tra cui:

      • READ_WRITE
        Non sono consentite le connessioni in cui la proprietà di connessione Finalità dell'applicazione è impostata su ReadOnly. Se la proprietà Finalità dell'applicazione è impostata su ReadWrite o se tale proprietà non è impostata, la connessione è consentita. Per ulteriori informazioni sulla proprietà di connessione Finalità dell'applicazione, vedere Utilizzo delle parole chiave delle stringhe di connessione con SQL Server Native Client.

      • ALL
        Sono consentite tutte le connessioni ai database nella replica primaria. Si tratta del comportamento predefinito.

    • READ_ONLY_ROUTING_LIST = { (‘<istanza_server> [ ,...n ] ) | NONE }
      Specifica un elenco delimitato da virgole di istanze del server in cui sono ospitate repliche di disponibilità per questo gruppo di disponibilità che soddisfano i requisiti seguenti quando vengono eseguite nel ruolo secondario:

      • Sono configurate per consentire tutte le connessioni o connessioni in sola lettura (vedere l'argomento ALLOW_CONNECTIONS dell'opzione SECONDARY_ROLE, sopra).

      • Dispongono del proprio URL del routing di sola lettura (vedere l'argomento READ_ONLY_ROUTING_URL dell'opzione SECONDARY_ROLE, sopra).

      I valori di READ_ONLY_ROUTING_LIST sono i seguenti:

      • <istanza_server>
        Specifica l'indirizzo dell'istanza di SQL Server che funge da host per una replica di disponibilità che è una replica secondaria leggibile quando è in esecuzione nel ruolo secondario.

        Utilizzare un elenco delimitato da virgole per specificare tutte le istanze del server che potrebbero ospitare una replica secondaria leggibile. Il routing di sola lettura seguirà l'ordine nel quale le istanze del server vengono specificate nell'elenco. Se si include l'istanza del server host di una replica nell'elenco di routing di sola lettura della replica, il posizionamento di questa istanza del server alla fine dell'elenco costituisce in genere buona pratica, poiché le connessioni con finalità di lettura vengono indirizzate a una replica secondaria, se ne è disponibile una.

      • NONE
        Specifica che quando questa replica di disponibilità è la replica primaria, il routing di sola lettura non è supportato. Questo è il comportamento predefinito.

  • SESSION_TIMEOUT = integer
    Specifica il periodo di timeout della sessione in secondi. Se non si specifica questa opzione, il periodo di timeout predefinito è di 10 secondi. Il valore minimo è 5 secondi.

    Nota importanteImportante

    È consigliabile utilizzare un periodo di timeout di almeno 10 secondi.

    Per ulteriori informazioni sul periodo di timeout della sessione, vedere Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server).

  • LISTENER dns_name’( <opzione_listener> )
    Definisce un nuovo listener per il gruppo di disponibilità. LISTENER è un argomento facoltativo.

    Nota importanteImportante

    Prima di creare il primo listener, è consigliabile leggere Creare o configurare un listener del gruppo di disponibilità (SQL Server).

    Dopo aver creato un listener per un gruppo di disponibilità specifico, è consigliabile effettuare le operazioni seguenti:

    • Chiedere all'amministratore di rete di riservare l'indirizzo IP del listener per un utilizzo esclusivo.

    • Fornire il nome host DNS del listener agli sviluppatori dell'applicazione in modo da essere utilizzato nelle stringhe di connessione per la richiesta di connessioni client al gruppo di disponibilità.

  • dns_name
    Specifica il nome host DNS del listener del gruppo di disponibilità. È necessario che il nome DNS del listener sia univoco nel dominio e in NetBIOS.

    dns_name è un valore stringa. Può contenere solo caratteri alfanumerici, trattini (-) e caratteri di sottolineatura (_), in qualsiasi ordine. Per i nomi host DNS non viene fatta distinzione tra maiuscole e minuscole. La lunghezza massima è di 63 caratteri.

    È consigliabile specificare una stringa significativa. Ad esempio, per un gruppo di disponibilità denominato AG1 un nome host DNS significativo potrebbe essere ag1-listener.

    Nota importanteImportante

    NetBIOS riconosce solo i primi 15 caratteri di dns_name. Se si dispone di due cluster WSFC controllati dallo stesso dominio Active Directory e si tenta di creare listener del gruppo di disponibilità in entrambi i cluster utilizzando nomi con più di 15 caratteri e un prefisso a 15 caratteri identico, verrà restituito un errore in cui si segnala che non è possibile portare online la risorsa del nome di rete virtuale. Per informazioni sulle regole di denominazione dei prefissi per i nomi DNS, vedere Assegnare nomi ai domini.

  • <listener_option>
    LISTENER accetta uno dei valori seguenti per <opzione_listener>:

    • WITH DHCP [ ON { (‘four_part_ipv4_address’,‘four_part_ipv4_mask’) } ]
      Specifica che il listener del gruppo di disponibilità utilizzerà il protocollo DHCP (Dynamic Host Configuration Protocol). Facoltativamente, utilizzare la clausola ON per identificare la rete su cui verrà creato il listener. DHCP è limitato a una sola subnet utilizzata per ogni istanza del server nel cui gruppo di disponibilità è ospitata una replica di disponibilità.

      Nota importanteImportante

      Non è consigliabile utilizzare DHCP negli ambienti di produzione. Se si verifica un periodo di inattività e il lease IP DHCP scade, è necessario del tempo aggiuntivo per registrare il nuovo indirizzo IP della rete DHCP che è associato al nome DNS del listener e influisce sulla connettività client. DHCP può essere tranquillamente utilizzato per la configurazione dell'ambiente di sviluppo e test per verificare le funzioni di base di gruppi di disponibilità e per l'integrazione con le applicazioni.

      Esempio:

      WITH DHCP ON ('10.120.19.0','255.255.254.0')

    • WITH IP ( { (‘four_part_ipv4_address’,‘four_part_ipv4_mask’)(‘ipv6_address’) } [ , ...n ] ) [ , PORT **=**listener_port ]
      Specifica che, anziché utilizzare DHCP, nel listener del gruppo di disponibilità verranno utilizzati uno o più indirizzi IP statici. Per creare un gruppo di disponibilità tra più subnet, viene richiesto un indirizzo IP statico nella configurazione del listener per ogni subnet. Per una determinata subnet, l'indirizzo IP statico può essere un indirizzo IPv4 o IPv6. Contattare l'amministratore di rete per ottenere un indirizzo IP statico per ogni subnet in cui verrà ospitata una replica di disponibilità per il nuovo gruppo di disponibilità.

      Esempio:

      WITH IP ( ('10.120.19.155','255.255.254.0') )

  • four_part_ipv4_address
    Specifica un indirizzo IPv4 in quattro parti per un listener del gruppo di disponibilità, ad esempio 10.120.19.155.

  • four_part_ipv4_mask
    Specifica una maschera IPv4 in quattro parti per un listener del gruppo di disponibilità, ad esempio 255.255.254.0.

  • ipv6_address
    Specifica un indirizzo IPv6 per un listener del gruppo di disponibilità, ad esempio 2001::4898:23:1002:20f:1fff:feff:b3a3.

  • PORT = listener_port
    Specifica il numero di porta, listener_port, che deve essere utilizzato da un listener del gruppo di disponibilità specificato mediante una clausola WITH IP. PORT è facoltativo.

    È supportato il numero di porta predefinito, 1433. Tuttavia, per motivi di sicurezza, è consigliabile utilizzare un numero di porta diverso.

    Esempio: WITH IP ( ('2001::4898:23:1002:20f:1fff:feff:b3a3') ) , PORT = 7777

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Prerequisiti e restrizioni

Per informazioni sui prerequisiti per la creazione di un gruppo di disponibilità, vedere Prerequisiti, restrizioni e consigli per i gruppi di disponibilità AlwaysOn (SQL Server).

Per informazioni sulle restrizioni relative alle istruzioni Transact-SQL AVAILABILITY GROUP, vedere Panoramica delle istruzioni Transact-SQL 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.

Esempi

A.Configurazione di un backup nelle repliche secondarie, dei criteri di failover flessibili e dell'accesso alla connessione

Nell'esempio seguente si crea un gruppo di disponibilità denominato MyAg per due database utente, ThisDatabase e ThatDatabase. Nella tabella seguente si riepilogano i valori specificati per le opzioni impostate per il gruppo di disponibilità.

Opzione del gruppo

Impostazione

Descrizione

AUTOMATED_BACKUP_PREFERENCE

SECONDARY

Con questa preferenza di backup automatico viene indicato che i backup devono essere eseguiti in una replica secondaria tranne quando la replica primaria è l'unica replica online (comportamento predefinito). Affinché l'impostazione AUTOMATED_BACKUP_PREFERENCE abbia effetto, è necessario generare script di processi di backup sui database di disponibilità per prendere in considerazione la preferenza di backup automatico.

FAILURE_CONDITION_LEVEL

3

Con questa impostazione del livello della condizione di errore viene specificato che deve essere avviato un failover automatico in caso di errori interni di SQL Server critici, ad esempio spinlock orfani, gravi violazioni dell'accesso in scrittura o dumping eccessivo.

HEALTH_CHECK_TIMEOUT

600000

Con questo valore di timeout del controllo di integrità pari a 60 secondi viene specificato che il tempo di attesa del cluster WSFC per la restituzione di informazioni, da parte della stored procedure di sistema sp_server_diagnostics, sull'integrità del server relativamente a un'istanza del server in cui è ospitata una replica con commit sincrono prima che nel cluster si presupponga che l'istanza del server host sia lenta o bloccata sarà di 60000 millisecondi. Il valore predefinito è 30000 millisecondi.

Tre repliche di disponibilità devono essere ospitate dalle istanze predefinite del server in computer denominati COMPUTER01, COMPUTER02 e COMPUTER03. Nella tabella seguente si riepilogano i valori specificati per le opzioni di ogni replica.

Opzione della replica

Impostazione su COMPUTER01

Impostazione su COMPUTER02

Impostazione su COMPUTER03

Descrizione

ENDPOINT_URL

TCP://COMPUTER01:5022

TCP://COMPUTER02:5022

TCP://COMPUTER03:5022

In questo esempio i sistemi si trovano nello stesso dominio, pertanto per gli URL dell'endpoint può essere utilizzato il nome del sistema come relativo indirizzo.

AVAILABILITY_MODE

SYNCHRONOUS_COMMIT

SYNCHRONOUS_COMMIT

ASYNCHRONOUS_COMMIT

In due repliche viene utilizzata la modalità con commit sincrono. In caso di sincronizzazione, supportano il failover senza perdita di dati. Nella terza replica viene utilizzata la modalità di disponibilità con commit asincrono.

FAILOVER_MODE

AUTOMATIC

AUTOMATIC

MANUAL

Le repliche con commit sincrono supportano il failover automatico e il failover manuale pianificato. La replica in cui viene utilizzata la modalità di disponibilità con commit sincrono supporta solo il failover manuale forzato.

BACKUP_PRIORITY

30

30

90

Alla replica con commit asincrono viene assegnata una priorità più alta, pari a 90, rispetto alle repliche con commit sincrono. Generalmente, i backup verranno eseguiti nell'istanza del server in cui è ospitata la replica secondaria con commit asincrono.

SECONDARY_ROLE

( ALLOW_CONNECTIONS = NO,

READ_ONLY_ROUTING_URL = 'TCP://COMPUTER01:1433' )

( ALLOW_CONNECTIONS = NO,

READ_ONLY_ROUTING_URL = 'TCP://COMPUTER02:1433' )

( ALLOW_CONNECTIONS = READ_ONLY, READ_ONLY_ROUTING_URL = 'TCP://COMPUTER03:1433' )

Solo la replica con commit asincrono viene utilizzata come replica secondaria leggibile.

Specifica il nome del computer e il numero di porta predefinito del motore di database (1433).

L'argomento è facoltativo.

PRIMARY_ROLE

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (COMPUTER03) )

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (COMPUTER03) )

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = NONE )

Nel ruolo primario, i tentativi di connessione con finalità di lettura verranno rifiutati da tutte le repliche.

Le richieste di connessione con finalità di lettura saranno indirizzate a COMPUTER03 se la replica locale è in esecuzione nel ruolo secondario. Quando tale replica è in esecuzione nel ruolo primario, il routing di sola lettura è disabilitato.

L'argomento è facoltativo.

SESSION_TIMEOUT

10

10

10

In questo esempio si specifica il valore di timeout della sessione predefinito (10). L'argomento è facoltativo.

Infine, nell'esempio si specificano la clausola LISTENER facoltativa per creare un listener per il nuovo gruppo di disponibilità e un nome DNS univoco, MyAgListenerIvP6, per questo listener. Le due repliche si trovano in subnet diverse, pertanto per il listener devono essere utilizzati indirizzi IP statici. Per ognuna delle due repliche di disponibilità, tramite la clausola WITH IP si specifica un indirizzo IP statico, 2001:4898:f0:f00f::cf3c e 2001:4898:e0:f213::4ce2, per il quale è utilizzato il formato IPv6. In questo esempio si specifica anche utilizza l'argomento PORT facoltativo per indicare la porta 60173 come porta del listener.

CREATE AVAILABILITY GROUP MyAg 
   WITH (
      AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
      FAILURE_CONDITION_LEVEL  =  3, 
      HEALTH_CHECK_TIMEOUT = 600000
       )
   
   FOR 
      DATABASE  ThisDatabase, ThatDatabase 
   REPLICA ON 
      'COMPUTER01' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER01:5022',
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
         FAILOVER_MODE = AUTOMATIC,
         BACKUP_PRIORITY = 30,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = NO, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ), 
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ),
         SESSION_TIMEOUT = 10
         ), 
         
      'COMPUTER02' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER02:5022',
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
         FAILOVER_MODE = AUTOMATIC,
         BACKUP_PRIORITY = 30,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = NO, 
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER02:1433' ),
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ),
         SESSION_TIMEOUT = 10
         ), 
         
      'COMPUTER03' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER03:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE =  MANUAL,
         BACKUP_PRIORITY = 90,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY, 
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER03:1433' ),
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = NONE ),
         SESSION_TIMEOUT = 10
         )

LISTENER ‘MyAgListenerIvP6’ ( WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) , PORT = 60173 ); 
GO

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Attività correlate

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Vedere anche

Riferimento

ALTER AVAILABILITY GROUP (Transact-SQL)

ALTER DATABASE SET HADR (Transact-SQL)

DROP AVAILABILITY GROUP (Transact-SQL)

Concetti

Risolvere i problemi relativi alla configurazione di Gruppi di disponibilità AlwaysOn (SQL Server)

Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)

Listener del gruppo di disponibilità, connettività client e failover dell'applicazione (SQL Server)