Compartilhar via


CREATE AVAILABILITY GROUP (Transact-SQL)

Cria um novo grupo de disponibilidade, se a instância de SQL Server for habilitada para o recurso Grupos de Disponibilidade AlwaysOn.

Importante

Execute CREATE AVAILABILITY GROUP na instância do SQL Server que você pretende usar como a réplica primária inicial de seu novo grupo de disponibilidade.Essa instância de servidor deve residir em um nó WSFC (Windows Server Failover Clustering).

Aplica-se a: SQL Server (SQL Server 2012 à versão atual).

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

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’
     }

Argumentos

  • group_name
    Especifica o nome do novo grupo de disponibilidade. group_name deve ser um identificador válido do SQL Server e deve ser exclusivo em todos os grupos de disponibilidade no cluster WSFC. O tamanho máximo de um nome de grupo de disponibilidade é 128 caracteres.

  • AUTOMATED_BACKUP_PREFERENCE = { PRIMARY | SECONDARY_ONLY| SECONDARY | NONE }
    Especifica uma preferência sobre como um trabalho de backup deve avaliar a réplica primária ao escolher onde executar backups. Você pode criar um script de um determinado trabalho de backup para considerar a preferência de backup automatizada. É importante entender que a preferência não é imposta pelo SQL Server, portanto, não tem nenhum impacto em backups ad hoc.

    Os valores com suporte são os seguintes:

    • PRIMARY
      Especifica que os backups sempre devem ocorrer na réplica primária. Essa opção será útil se você precisar de recursos de backup, como a criação de backups diferenciais, que não têm suporte quando o backup é executado em uma réplica secundária.

      Importante

      Se você pretende usar o envio de logs para preparar qualquer banco de dados secundário para um grupo de disponibilidade, defina a preferência de backup automatizada como Primário até que todos os bancos de dados secundários estejam preparados e associados ao grupo de disponibilidade.

    • SECONDARY_ONLY
      Especifica que os backups nunca devem ser executados na réplica primária. Se a réplica primária for a única réplica online, o backup não deveria ocorrer.

    • SECONDARY
      Especifica que os backups devem ocorrer em uma réplica secundária, exceto quando a réplica primária for a única réplica online. Nesse caso, o backup deve ocorrer na réplica primária. Esse é o comportamento padrão.

    • NONE
      Especifica que você prefere que trabalhos de backup ignorem a função das réplicas de disponibilidade ao escolher a réplica para executar backups. Observe que os trabalhos de backup podem avaliar outros fatores, como prioridade de backup de cada réplica de disponibilidade em combinação com seu estado operacional e estado conectado.

    Importante

    Não há nenhuma imposição da configuração AUTOMATED_BACKUP_PREFERENCE.A interpretação dessa preferência depende da lógica, se houver, que você usa para o script em trabalhos de backup para os bancos de dados em um determinado grupo de disponibilidade.A configuração de preferência de backup automatizado não tem efeito sobre backups ad hoc.Para obter mais informações, consulte Configurar backup em réplicas de disponibilidade (SQL Server).

    Dica

    Para exibir a preferência de backup automatizada de um grupo de disponibilidade existente, selecione a coluna automated_backup_preference ou automated_backup_preference_desc da exibição do catálogo sys.availability_groups.Além disso, sys.fn_hadr_backup_is_preferred_replica (Transact-SQL) pode ser usado para determinar a réplica de backup preferencial.Esta função sempre retornará 1 para pelo menos uma das réplicas, mesmo quando AUTOMATED_BACKUP_PREFERENCE = NONE.

  • FAILURE_CONDITION_LEVEL = { 1 | 2 | 3 | 4 | 5 }
    Especifica quais condições de falha que dispararão um failover automático para esse grupo de disponibilidade. FAILURE_CONDITION_LEVEL é definido no nível do grupo, mas é só relevante em réplicas de disponibilidade configuradas para o modo de disponibilidade de confirmação síncrona (AVAILIBILITY_MODE = SYNCHRONOUS_COMMIT). Além disso, condições de falha poderão disparar um failover automático se as réplicas primárias e secundárias forem configuradas para o modo de failover automático (FAILOVER_MODE = AUTOMATIC) e a réplica secundária estiver sincronizada atualmente com a réplica primária.

    Os níveis da condição de falha (1 a 5) variam do menos restritivo, nível 1, até o mais restritivo, nível 5. Um determinado nível de condição abrange todos os níveis menos restritivos. Assim, o nível de condição mais rígido, 5, inclui os quatro níveis de condição menos restritivos (1 a 4), o nível 4 inclui os níveis 1 a 3 e assim sucessivamente. A tabela a seguir descreve a condição de falha que corresponde a cada nível.

    Nível

    Condição de falha

    1

    Especifica que um failover automático deverá ser iniciado quando uma destas condições ocorrer:

    2

    Especifica que um failover automático deverá ser iniciado quando uma destas condições ocorrer:

    • A instância de SQL Server não se conecta ao cluster e o limite de HEALTH_CHECK_TIMEOUT especificado pelo usuário do grupo de disponibilidade é excedido.

    • A réplica de disponibilidade está em estado de falha.

    3

    Especifica que um failover automático deve ser iniciado em erros internos críticos do SQL Server, como spinlocks órfãos, violações do acesso de gravação graves ou muito descarte.

    Esse é o comportamento padrão.

    4

    Especifica que um failover automático deve ser iniciado em caso de erros internos moderados do SQL Server, como uma condição de memória insuficiente persistente no pool de recursos interno do SQL Server.

    5

    Especifica que um failover automático deve ser iniciado em qualquer condição de falha qualificada, incluindo:

    • Esgotamento dos threads de trabalho do SQL Engine.

    • Detecção de um deadlock insolúvel.

    Dica

    A falta de resposta por uma instância do SQL Server para solicitações cliente não é relevante para grupos de disponibilidade.

    Os valores FAILURE_CONDITION_LEVEL e HEALTH_CHECK_TIMEOUT definem uma política de failover flexível para um determinado grupo. Essa política de failover flexível permite a você um controle granular sobre quais condições devem causar um failover automático. Para obter mais informações, consulte Política de failover flexível para failover automático de um grupo de disponibilidade (SQL Server).

  • HEALTH_CHECK_TIMEOUT = milliseconds
    Especifica o tempo de espera (em milissegundos) para o procedimento armazenado de sistema sp_server_diagnostics retornar informações da integridade de servidor antes de o cluster WSFC assumir que a instância do servidor está lenta ou pendente. HEALTH_CHECK_TIMEOUT é definido no nível do grupo, mas é só relevante em réplicas de disponibilidade configuradas para o modo de disponibilidade de confirmação síncrona com failover automático (AVAILIBILITY_MODE = SYNCHRONOUS_COMMIT). Além disso, o tempo limite da verificação de integridade poderá disparar um failover automático se as réplicas primárias e secundárias forem configuradas para o modo de failover automático (FAILOVER_MODE = AUTOMATIC) e a réplica secundária estiver sincronizada atualmente com a réplica primária.

    O valor HEALTH_CHECK_TIMEOUT padrão é 30.000 milissegundos (30 segundos). O valor mínimo é 15000 milissegundos (15 segundos) e o máximo é 4294967295 milissegundos.

    Importante

    sp_server_diagnostics não executa verificações de integridade no nível de banco de dados.

  • DATABASE database_name
    Especifica uma lista de um ou mais bancos de dados de usuário na instância local do SQL Server (isto é, a instância de servidor na qual você está criando o grupo de disponibilidade). É possível especificar vários bancos de dados para um grupo de disponibilidade, mas cada banco de dados pode pertencer a apenas um grupo de disponibilidade. Para obter informações sobre o tipo de bancos de dados ao qual um grupo de disponibilidade pode dar suporte, consulte Pré-requisitos, restrições e recomendações para grupos de disponibilidade AlwaysOn (SQL Server). Para descobrir quais bancos de dados locais já pertencem a um grupo de disponibilidade, consulte a coluna replica_id na exibição do catálogo sys.databases.

    A cláusula DATABASE é opcional. Se você a omitir, o novo grupo de disponibilidade estará vazio.

    Depois que você criou o grupo de disponibilidade, precisará se conectar cada instância de servidor que hospeda uma réplica secundária e, em seguida, prepara cada banco de dados secundário e une-o ao grupo de disponibilidade. Para obter mais informações, consulte Iniciar movimentação de dados em um banco de dados secundário AlwaysOn (SQL Server).

    Dica

    Posteriormente, você pode adicionar bancos de dados qualificados na instância do servidor que hospedam a réplica primária atual em um grupo de disponibilidade.Você também pode remover um banco de dados de um grupo de disponibilidade.Para obter mais informações, consulte ALTER AVAILABILITY GROUP (Transact-SQL).

  • REPLICA ON
    Especifica de uma a cinco instâncias do SQL Server para hospedar réplicas de disponibilidade no novo grupo de disponibilidade. Cada réplica é especificada por seu endereço de instância de servidor seguido por uma cláusula WITH (...). No mínimo, você deve especificar sua instância de servidor local que se tornará a réplica primária inicial. Opcionalmente, você também pode especificar até quatro réplicas secundárias.

    É necessário unir cada réplica secundária ao grupo de disponibilidade. Para obter mais informações, consulte ALTER AVAILABILITY GROUP (Transact-SQL).

    Dica

    Se você especificar menos de quatro réplicas secundárias ao criar um grupo de disponibilidade, poderá criar uma réplica secundária adicional a qualquer momento por meio da instrução ALTER AVAILABILITY GROUP Transact-SQL.Também é possível usar essa instrução para remover qualquer réplica secundária de um grupo de disponibilidade existente.

  • <instância do servidor>
    Especifica o endereço da instância do SQL Server que é o host para uma réplica. O formato de endereço depende se a instância é a instância padrão ou uma instância nomeada, e se é uma instância autônoma ou uma instância de cluster de failover (FCI), da seguinte maneira:

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

    Os componentes desse endereço são os seguintes:

    • system_name
      É o nome NetBIOS do computador do sistema no qual reside uma instância de destino do SQL Server. Esse computador deve ser um nó WSFC.

    • FCI_network_name
      É o nome da rede usada para acessar um cluster de failover do SQL Server. Use-o se a instância de servidor participar como um parceiro de failover do SQL Server. A execução de SELECT @@SERVERNAME em uma instância de servidor FCI retorna sua cadeia de caracteres 'FCI_network_name[\instance_name]' inteira (que é o nome completo da réplica).

    • instance_name
      É o nome de uma instância de um SQL Server que é hospedada por system_name ou FCI_network_name e cujo serviço HADR está habilitado. Para uma instância de servidor padrão, instance_name é opcional. O nome da instância não diferencia maiúsculas de minúsculas. Em uma instância de servidor autônoma, esse nome de valor é igual ao valor retornado pela execução de SELECT @@SERVERNAME.

    • \
      É um separador usado apenas ao especificar instance_name para separá-lo de system_name ou FCI_network_name.

    Para obter informações sobre os pré-requisitos de nós WSFC e instâncias de servidor, consulte Pré-requisitos, restrições e recomendações para grupos de disponibilidade AlwaysOn (SQL Server).

  • ENDPOINT_URL = 'TCP://system-address:port'
    Especifica o caminho da URL para o ponto de extremidade de espelhamento de banco de dados na instância do SQL Server que hospedará a réplica de disponibilidade que você está definindo na cláusula REPLICA ON atual.

    A cláusula ENDPOINT_URL é necessária. Para obter mais informações, consulte Especifique a URL do Ponto de Extremidade Ao Adicionar ou Modificando uma Réplica de disponibilidade (SQL Server).

  • 'TCP://system-address:port'
    Especifica uma URL para especificar uma URL de ponto de extremidade ou URL de roteamento somente leitura. Os parâmetros de URL são os seguintes:

    • system-address
      É uma cadeia de caracteres, como um nome de sistema, um nome de domínio totalmente qualificado ou um endereço IP, que identifica de forma exclusiva o sistema do computador de destino.

    • port
      É um número de porta que está associado ao ponto de extremidade de espelhamento da instância do servidor parceiro (para a opção ENDPOINT_URL) ou o número de porta usado pelo Mecanismo de Banco de Dados da instância de servidor (para a opção READ_ONLY_ROUTING_URL).

  • AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT }
    Especifica se a réplica primária tem que esperar a réplica secundária confirmar o fortalecimento (gravação) dos registros de log no disco, antes de a réplica primária poder confirmar a transação em um determinado banco de dados primário. As transações em bancos de dados diferentes na mesma réplica primária podem ser confirmadas independentemente.

    • SYNCHRONOUS_COMMIT
      Especifica se a réplica primária esperará para confirmar transações até que eles tenham sido fortalecidas nessa réplica secundária (modo de confirmação síncrona). Você pode especificar SYNCHRONOUS_COMMIT para até três réplicas, inclusive a réplica primária.

    • ASYNCHRONOUS_COMMIT
      Especifica se a réplica primária confirma transações sem esperar que essa réplica secundária fortaleça o log (modo de disponibilidade de confirmação síncrona). Você pode especificar ASYNCHRONOUS_COMMIT para até cinco réplicas de disponibilidade, inclusive a réplica primária.

    A cláusula AVAILABILITY_MODE é necessária. Para obter mais informações, consulte Modos de disponibilidade (grupos de disponibilidade AlwaysOn).

  • FAILOVER_MODE = { AUTOMATIC | MANUAL }
    Especifica o modo de disponibilidade da réplica de disponibilidade que você está definindo.

    • AUTOMATIC
      Permite o failover automático. Esta opção só terá suporte se você também especificar AVAILABILITY_MODE = SYNCHRONOUS_COMMIT. Você pode especificar AUTOMATIC para duas réplicas de disponibilidade, inclusive a réplica primária.

      Dica

      As FCIs (Instâncias de cluster de failover) do SQL Server não dão suporte ao failover automático por grupos de disponibilidade, de modo que qualquer réplica de disponibilidade que esteja hospedado por um FCI só pode ser configurada para failover manual.

    • MANUAL
      Habilita o failover manual planejado ou o failover manual forçado (em geral, chamado failover forçado) pelo administrador de banco de dados.

    A cláusula FAILOVER_MODE é necessária. Os dois tipos de failover manual - failover manual sem perda de dados e failover forçado (com possível perda de dados) - têm suporte em condições diferentes. Para obter mais informações, consulte Failover e modos de failover (grupos de disponibilidade AlwaysOn).

  • BACKUP_PRIORITY **=**n
    Especifica sua prioridade para executar backups nesta réplica em relação às outras réplicas no mesmo grupo de disponibilidade. O valor é um número inteiro no intervalo de 0..100. Esses valores têm estes significados:

    • 1..100 indica que a réplica de disponibilidade pode ser escolhida para executar backups. 1 indica a prioridade mais baixa, e 100 indica a prioridade mais alta. Se BACKUP_PRIORITY = 1, a réplica de disponibilidade será escolhida para só executar backups se nenhuma réplica de disponibilidade de prioridade mais alta estiver atualmente disponível.

    • 0 indica que essa réplica de disponibilidade nunca será escolhida para executar backups. Isso é útil, por exemplo, para uma réplica de disponibilidade remota para a qual você nunca deseja que ocorra o failover de backups.

    Para obter mais informações, consulte Secundárias ativas: backup em réplicas secundárias (Grupos de Disponibilidade AlwaysOn).

  • SECONDARY_ROLE ()
    Especifica configurações específicas de papel que terão efeito se essa réplica de disponibilidade tiver a função secundária (ou seja, sempre que for uma réplica secundária) no momento. Dentro dos parênteses, especifique uma ou ambas as opções de função secundária. Se você especificar ambas, use uma lista separada por vírgulas.

    As opções de função secundária são as seguintes:

    • ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL }
      Especifica se os bancos de dados de uma determinada réplica de disponibilidade que está executando a função primária (isto é, está atuando como uma réplica secundária) podem aceitar conexões de clientes. Pode ser:

      • NO
        Nenhuma conexão de usuário é permitida para bancos de dados secundários desta réplica. Eles não estão disponíveis para acesso de leitura. Esse é o comportamento padrão.

      • READ_ONLY
        Apenas conexões são permitidas com os bancos de dados na réplica secundária onde a propriedade Application Intent está definida como ReadOnly. Para obter mais informações sobre essa propriedade, consulte Usando palavras-chave da cadeia de conexão com o SQL Server Native Client.

      • ALL
        Todas as conexões são permitidas com os bancos de dados na réplica secundária para acesso somente leitura.

      Para obter mais informações, consulte Secundárias ativas: réplicas secundárias legíveis (Grupos de Disponibilidade AlwaysOn).

    • READ_ONLY_ROUTING_URL = 'TCP://system-address:port'
      Especifica a URL a ser usada para rotear solicitações de conexão de intenção de leitura para esta réplica de disponibilidade. Esta é a URL na qual o Mecanismo de Banco de Dados do SQL Server escuta. Normalmente, a instância padrão do Mecanismo de Banco de Dados do SQL Server escuta na porta TCP 1433.

      Para uma instância nomeada, você pode obter o número de porta consultando as colunas port e type_desc da exibição de gerenciamento dinâmico do sys.dm_tcp_listener_states. A instância de servidor usa o ouvinte do Transact-SQL (type_desc = 'TSQL').

      Para obter mais informações sobre como calcular a URL de roteamento somente leitura de uma réplica de disponibilidade, consulte Calculando read_only_routing_url de AlwaysOn.

      Dica

      Para uma instância nomeada do SQL Server, o ouvinte do Transact-SQL deve ser configurado para usar uma porta específica.Para obter mais informações, consulte Configurar um servidor para escuta em uma porta TCP específica (SQL Server Configuration Manager).

  • PRIMARY_ROLE ()
    Especifica configurações específicas de papel que terão efeito se essa réplica de disponibilidade tiver a função primária (ou seja, sempre que for uma réplica primária) no momento. Dentro dos parênteses, especifique uma ou ambas as opções de função primária. Se você especificar ambas, use uma lista separada por vírgulas.

    As opções de função primária são as seguintes:

    • ALLOW_CONNECTIONS = { READ_WRITE | ALL }
      Especifica o tipo de conexão que os bancos de dados de uma determinada réplica de disponibilidade que está executando a função primária (isto é, está atuando como uma réplica primária) podem aceitar de clientes. O tipo pode ser:

      • READ_WRITE
        Conexões em que a propriedade de conexão Application Intent é definida como ReadOnly não são permitidas. Quando a propriedade Application Intent está definida como ReadWrite ou não está definida, a conexão é permitida. Para obter mais informações sobre a propriedade de conexão Application Intent, consulte Usando palavras-chave da cadeia de conexão com o SQL Server Native Client.

      • ALL
        Todas as conexões são permitidas com os bancos de dados na réplica primária. Esse é o comportamento padrão.

    • READ_ONLY_ROUTING_LIST = { (‘<instância de servidor> [ ,...n ] ) | NONE }
      Especifica uma lista separada por vírgulas de instâncias de servidor que hospedam réplicas para este grupo de disponibilidade que atendem aos seguintes requisitos ao serem executados na função secundária:

      • Ser configurado para permitir todas as conexões ou conexões somente leitura (veja o argumento ALLOW_CONNECTIONS da opção SECONDARY_ROLE acima).

      • Ter a URL de roteamento somente leitura definida (veja o argumento READ_ONLY_ROUTING_URL da opção SECONDARY_ROLE acima).

      Os valores READ_ONLY_ROUTING_LIST são os seguintes:

      • <instância do servidor>
        Especifica o endereço da instância do SQL Server que é o host para uma réplica de disponibilidade que é uma réplica secundária legível ao ser executada na função secundária.

        Use uma lista separada por vírgulas para especificar todas as instâncias de servidor que podem hospedar uma réplica secundária legível. O roteamento somente leitura seguirá a ordem na qual as instâncias de servidor são especificadas na lista. Se você incluir uma instância de servidor de host de uma réplica na lista de roteamento somente leitura da réplica, colocar esta instância de servidor no final da lista geralmente é uma boa prática, de forma que as conexões de intenção de leitura vão para uma réplica secundária, se houver.

      • NONE
        Especifica que, quando esta réplica de disponibilidade for a réplica primária, o roteamento somente leitura não terá suporte. Esse é o comportamento padrão.

  • SESSION_TIMEOUT = integer
    Especifica o tempo limite da sessão, em segundos. Se você não especificar essa opção, por padrão, o período de tempo será de 10 segundos. O valor mínimo é 5 segundos.

    Importante

    Recomendamos que você mantenha o tempo limite em 10 segundos ou mais.

    Para obter mais informações sobre como definir o período de tempo limite de sessão, consulte Visão geral de grupos de disponibilidade AlwaysOn (SQL Server).

  • LISTENER dns_name ( <listener_option> )
    Define um novo ouvinte de grupo de disponibilidade para esse grupo de disponibilidade. LISTENER é um argumento opcional.

    Importante

    Antes de criar seu primeiro ouvinte, é altamente recomendável que você leia Criar ou configurar um ouvinte de grupo de disponibilidade (SQL Server).

    Depois que você criar um ouvinte para um determinado grupo de disponibilidade, será altamente recomendável fazer o seguinte:

    • Peça ao administrador da rede para reservar o endereço IP do ouvinte para seu uso exclusivo.

    • Informe o nome do host DNS do ouvinte aos desenvolvedores de aplicativos para uso em cadeias de conexão ao pedir conexões cliente com esse grupo de disponibilidade.

  • dns_name
    Especifica o nome de host DNS do ouvinte de grupo de disponibilidade. O nome DNS do ouvinte deve ser exclusivo no domínio e no NetBIOS.

    dns_name é um valor de cadeia de caracteres. Este nome pode conter somente caracteres alfanuméricos, traços (-) e hífens (_), em qualquer ordem. Os nomes de host DNS diferenciam maiúsculas de minúsculas. O comprimento máximo é 63 caracteres.

    Nós recomendamos que você especifique uma cadeia de caracteres significativa. Por exemplo, para um grupo de disponibilidade denominado AG1, um nome de host de DNS significativo seria ag1-listener.

    Importante

    O NetBIOS reconhece somente os primeiros 15 caracteres no dns_name.Se você tiver dois clusters do WSFC que sejam controlados pelo mesmo Active Directory e tentar criar ouvintes de grupo de disponibilidade nos dois clusters usando nomes com mais de 15 caracteres e um prefixo idêntico de 15 caracteres, você obterá um erro relatando que o recurso Nome de Rede virtual não pôde ser colocado online.Para obter informações sobre regras da nomenclatura de prefixos para nomes DNS, consulte Atribuindo nomes de domínio.

  • <listener_option>
    LISTENER apresenta uma das seguintes opções de <listener_option>:

    • WITH DHCP [ ON { (‘four_part_ipv4_address’,‘four_part_ipv4_mask’) } ]
      Especifica que o ouvinte de grupo de disponibilidade usará o protocolo DHCP. Opcionalmente, use a cláusula ON para identificar a rede na qual este ouvinte será criado. DHCP é limitado a uma única sub-rede que é usada para toda instância de servidor que hospeda uma réplica de disponibilidade no grupo de disponibilidade.

      Importante

      Nós não recomendamos o DHCP em ambiente de produção.Se houver um tempo de inatividade e a concessão do IP do DHCP expirar, a hora adicional deverá registrar o novo endereço IP da rede DHCP que está associado ao nome DNS do ouvinte e afetará a conectividade do cliente.No entanto, o DHCP é bom para configurar seu ambiente de desenvolvimento e teste para verificar as funções básicas de grupos de disponibilidade e para integração com seus aplicativos.

      Por exemplo:

      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 ]
      Especifica que, em vez de usar o DHCP, o ouvinte do grupo de disponibilidade usará um ou mais endereços IP estáticos. Para criar um grupo de disponibilidade em várias sub-redes, cada sub-rede exige um endereço IP estático na configuração de ouvinte. Para determinada sub-rede, o endereço IP estático pode ser um endereço IPv4 ou um endereço IPv6. Contate o administrador da rede para obter um endereço IP estático para cada sub-rede que hospedará uma réplica de disponibilidade para o novo grupo de disponibilidade.

      Por exemplo:

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

  • four_part_ipv4_address
    Especifica um endereço IPv4 de quatro partes para um ouvinte de grupo de disponibilidade. Por exemplo, 10.120.19.155.

  • four_part_ipv4_mask
    Especifica uma máscara IPv4 de quatro partes para um ouvinte de grupo de disponibilidade. Por exemplo, 255.255.254.0.

  • ipv6_address
    Especifica um endereço IPv6 de quatro partes para um ouvinte de grupo de disponibilidade. Por exemplo, 2001::4898:23:1002:20f:1fff:feff:b3a3.

  • PORT = listener_port
    Especifica o número de porta — listener_port — a ser usado por um ouvinte de grupo de disponibilidade especificado por uma cláusula WITH IP. PORT é opcional.

    Não há suporte para o número da porta padrão 1433. No entanto, se você estiver preocupado com a segurança, nós recomendaremos usar um número de porta diferente.

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

Ícone de seta usado com o link Voltar ao Início[Início]

Pré-requisitos e restrições

Para obter informações sobre os pré-requisitos para criar um grupo de disponibilidade, consulte Pré-requisitos, restrições e recomendações para grupos de disponibilidade AlwaysOn (SQL Server).

Para obter informações sobre restrições nas instruções Transact-SQL AVAILABILITY GROUP, consulte Visão geral de instruções Transact-SQL para Grupos de Disponibilidade AlwaysOn (SQL Server).

Segurança

Permissões

Requer a associação na função de servidor fixa sysadmin e a permissão de servidor CREATE AVAILABILITY GROUP, a permissão CONTROL AVAILABILITY GROUP, a permissão ALTER ANY AVAILABILITY GROUP ou a permissão CONTROL SERVER.

Exemplos

A.Configurando backup em réplicas secundárias, política de failover flexível e acesso de conexão

O exemplo a seguir cria um grupo de disponibilidade denominado MyAg para dois bancos de dados de usuários, ThisDatabase e ThatDatabase. A tabela a seguir resume os valores especificados para as opções que são definidas como um todo para o grupo de disponibilidade.

Opção de grupo

Configuração

Descrição

AUTOMATED_BACKUP_PREFERENCE

SECONDARY

Essa preferência de backup automatizado indica que os backups devem ocorrer em uma réplica secundária, exceto quando a réplica primária for a única réplica online (comportamento padrão). Para que a configuração AUTOMATED_BACKUP_PREFERENCE tenha efeito, é preciso executar o script dos trabalhos de backup nos bancos de dados de disponibilidade para levar em conta a preferência de backup automatizado.

FAILURE_CONDITION_LEVEL

3

Essa configuração de nível de condição de falha especifica que um failover automático deve ser iniciado em erros internos críticos do SQL Server, como spinlocks órfãos, violações do acesso de gravação graves ou muito descarte.

HEALTH_CHECK_TIMEOUT

600000

Esse valor de tempo limite de verificação de integridade, 60 segundos, especifica que o WSFC aguardará 60000 milissegundos para o procedimento armazenado de sistema sp_server_diagnostics retornar as informações de integridade de uma instância de servidor que hospeda uma réplica de confirmação síncrona com backup automático antes de o cluster considerar que a instância de servidor host está lenta ou travada. (O valor padrão é 30000 milissegundos.)

Três réplicas de disponibilidade devem ser hospedadas pelas instâncias de servidor padrão nos computadores denominados COMPUTER01, COMPUTER02e COMPUTER03. A tabela a seguir resume os valores especificados para as opções de réplica de cada réplica.

Opção de réplica

Configuração no COMPUTER01

Configuração no COMPUTER02

Configuração no COMPUTER03

Descrição

ENDPOINT_URL

TCP://COMPUTER01:5022

TCP://COMPUTER02:5022

TCP://COMPUTER03:5022

Neste exemplo, os sistemas estão no mesmo domínio e, portanto, as URLs de pontos de extremidade podem usar o nome do sistema de computador como endereço do sistema.

AVAILABILITY_MODE

SYNCHRONOUS_COMMIT

SYNCHRONOUS_COMMIT

ASYNCHRONOUS_COMMIT

Duas das réplicas usam o modo de confirmação síncrona. Quando sincronizadas, elas oferecem suporte ao failover sem perda de dados. A terceira réplica, que usa o modo de disponibilidade de confirmação assíncrona.

FAILOVER_MODE

AUTOMATIC

AUTOMATIC

MANUAL

As réplicas da confirmação síncrona oferecem suporte ao failover automático e manual planejado. A réplica em modo de disponibilidade de confirmação síncrona oferece suporte somente ao failover manual forçado.

BACKUP_PRIORITY

30

30

90

Uma prioridade mais alta, 90, é atribuída à réplica de confirmação assíncrona, que para as réplicas de confirmação síncrona. Os backups tendem a ocorrer na instância de servidor que hospeda a réplica de confirmação assíncrona.

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

Somente a réplica de confirmação assíncrona serve como réplica secundária legível.

Especifica o nome de computador e o número de porta do Mecanismo de Banco de Dados padrão (1433).

Esse argumento é opcional.

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 )

Na função primária, todas as réplicas rejeitarão tentativas de conexão de intenção de leitura.

As solicitações de conexão da intenção de leitura serão roteadas para COMPUTER03 se a réplica local estiver sendo executada na função secundária. Quando essa réplica é executada na função primária, o roteamento somente leitura é desabilitado.

Esse argumento é opcional.

SESSION_TIMEOUT

10

10

10

Este exemplo especifica o valor do tempo limite de sessão padrão (10). Esse argumento é opcional.

Finalmente, o exemplo especifica a cláusula LISTENER opcional para criar um ouvinte de grupo de disponibilidade para o novo grupo de disponibilidade. Um nome DNS exclusivo, MyAgListenerIvP6, é especificado para esse ouvinte. As duas réplicas estão em sub-redes diferentes e, portanto, o ouvinte deve usar endereços IP estáticos. Para cada uma das duas réplicas de disponibilidade, a cláusula WITH IP especifica um endereço IP estático, 2001:4898:f0:f00f::cf3c e 2001:4898:e0:f213::4ce2, que usam o formato IPv6. Este exemplo também especifica o uso do argumento PORT opcional para especificar a porta 60173 como a porta do ouvinte.

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

Ícone de seta usado com o link Voltar ao Início[Início]

Tarefas relacionadas

Ícone de seta usado com o link Voltar ao Início[Início]

Consulte também

Referência

ALTER AVAILABILITY GROUP (Transact-SQL)

ALTER DATABASE SET HADR (Transact-SQL)

DROP AVAILABILITY GROUP (Transact-SQL)

Conceitos

Solucionar problemas de configuração de grupos de disponibilidade AlwaysOn (SQL Server)

Visão geral de grupos de disponibilidade AlwaysOn (SQL Server)

Ouvintes de grupo de disponibilidade, conectividade de cliente e failover de aplicativo (SQL Server)