Configurações Transact-SQL e modos de operação de espelhamento de banco de dados

Este tópico examina a operação de uma sessão de espelhamento de banco de dados do ponto de vista de configurações ALTER DATABASE e dos estados do banco de dados espelhado e da testemunha. O tópico destina-se a usuários que administram o espelhamento de banco de dados usando sobretudo ou exclusivamente o Transact-SQL, em vez de usar Microsoft SQL Server Management Studio. Para familiarizar-se com esses modos operacionais, consulte Sessões de espelhamento de banco de dados.

ObservaçãoObservação

Como alternativa ao uso do Transact-SQL, é possível controlar o modo de operação de uma sessão no Pesquisador de Objetos usando a página Espelhamento da caixa de diálogo Propriedades do Banco de Dados. Para obter mais informações, consulte Como configurar uma sessão de espelhamento de banco de dados (SQL Server Management Studio).

Como a segurança de transação e estado da testemunha afetam o modo de operação

O modo de operação de uma sessão é determinado pela combinação da configuração de sua segurança de transação e do estado da testemunha. A qualquer momento, o proprietário do banco de dados pode alterar o nível de segurança de transação e pode adicionar ou remover a testemunha.

Segurança de transação

Segurança de transação é uma propriedade de banco de dados específica de espelhamento que determina se uma sessão de espelhamento de banco de dados opera de forma síncrona ou assíncrona. Há dois níveis de segurança: FULL e OFF.

  • SAFETY FULL

    Segurança de transação completa faz a sessão operar sincronicamente em modo de segurança alta. Se uma testemunha estiver presente, uma sessão oferece suporte a failover automático.

    Quando se estabelece uma sessão utilizando instruções ALTER DATABASE, a sessão começa com a propriedade SAFETY configurada como FULL; ou seja, a sessão começa em modo de alta segurança. Após o início da sessão, é possível adicionar uma testemunha.

    Para obter mais informações, consulte Espelhamento de banco de dados síncrono (modo de alta segurança).

  • SAFETY OFF

    A desativação da segurança de transação faz a sessão operar de forma assíncrona, em modo de alto desempenho. Se a propriedade SAFETY for definida como OFF, a propriedade WITNESS também deve ser definida como OFF (o padrão). Para obter informações sobre o impacto da testemunha no modo de alto desempenho, consulte “O estado da testemunha”, mais adiante neste tópico. Para obter mais informações sobre a execução com segurança de transação desativada, consulte Espelhamento de banco de dados assíncrono (Modo de alto desempenho).

A configuração de segurança de transação do banco de dados é registrada em cada parceiro na exibição de catálogo sys.database_mirroring nas colunas mirroring_safety_level e mirroring_safety_level_desc. Para obter mais informações, consulte sys.database_mirroring (Transact-SQL).

A qualquer momento, o proprietário do banco de dados pode alterar o nível de segurança da transação.

Estado da testemunha

Se uma testemunha foi configurada, é necessário quorum, assim, o estado da testemunha é sempre significativo.

Se existir, a testemunha terá um dos dois estados:

  • Quando a testemunha está conectada a um parceiro, a testemunha está no estado CONNECTED com relação àquele parceiro e tem quorum com aquele parceiro. Nesse caso, o banco de dados pode ser disponibilizado, mesmo se um dos parceiros estiver indisponível.

  • Quando a testemunha existe mas não está conectada a um parceiro, a testemunha está no estado UNKNOWN com relação àquele parceiro. Nesse caso, a testemunha não tem quorum com aquele parceiro e se os parceiros não estiverem conectados entre si, o banco de dados fica indisponível.

Para obter mais informações sobre quorum, consulte Quorum: como uma testemunha afeta a disponibilidade do banco de dados.

O estado de cada testemunha em uma instância do servidor é registrado na exibição de catálogo sys.database_mirroring nas colunas mirroring_safety_level e mirroring_safety_level_desc. Para obter mais informações, consulte sys.database_mirroring (Transact-SQL).

A tabela a seguir apresenta um resumo de como o modo de operação de uma sessão depende da configuração de sua segurança de transação e do estado da testemunha.

Modo de operação

Segurança de transação

Estado de testemunha

Modo de alto desempenho

OFF

NULL (nenhuma testemunha)2

Modo de segurança alta sem failover automático

FULL

NULL (nenhuma testemunha)

Modo de segurança alta com failover automático1

FULL

CONNECTED

1 Se a testemunha for desconectada, recomendamos que você configure WITNESS OFF até que a instância do servidor de testemunha se torne disponível.

2 Se uma testemunha estiver presente em modo de desempenho alto, a testemunha não participará da sessão. Porém, para tornar o banco de dados disponível, pelo menos duas das instâncias do servidor devem permanecer conectadas. Então, recomendamos manter a propriedade WITNESS configurada como OFF em sessões de modo de desempenho alto. Para obter mais informações, consulte Quorum: como uma testemunha afeta a disponibilidade do banco de dados.

Exibindo a configuração de segurança e estado da testemunha

Para exibir a configuração de segurança e o estado da testemunha para um banco de dados, use a exibição de catálogo sys.database_mirroring. As colunas relevantes são as seguintes:

Fator

Colunas

Descrição

Segurança de transação

mirroring_safety_level ou mirroring_safety_level_desc

Configuração de segurança de transação para atualizações no banco de dados espelho, um dos seguintes:

UNKNOWN

OFF

FULL

NULL = banco de dados não está online.

Existe uma testemunha?

mirroring_witness_name

Nome do servidor de testemunha de espelhamento de banco de dados ou NULL, indicando que não existe testemunha.

Estado de testemunha

mirroring_witness_state ou mirroring_witness_state_desc

Estado da testemunha no banco de dados em um determinado parceiro:

UNKNOWN

CONNECTED

DISCONNECTED

NULL = não existe testemunha ou o banco de dados não está online.

Por exemplo, no servidor principal ou espelho, digite:

SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring

Para obter mais informações sobre exibições desse catálogo, consulte sys.database_mirroring (Transact-SQL).

Fatores que afetam o comportamento na perda do servidor principal

A tabela a seguir apresenta um resumo do efeito combinado da configuração de segurança de transação, do estado do banco de dados e do estado da testemunha sobre o comportamento de uma sessão de espelhamento na perda do servidor principal.

Segurança de transação

Estado de espelhamento de banco de dados espelho

Estado de testemunha

Comportamento quando o principal é perdido

FULL

SYNCHRONIZED

CONNECTED

Ocorre failover automático.

FULL

SYNCHRONIZED

DISCONNECTED

Paradas de servidor espelho; failover não é possível e o banco de dados não pode ser disponibilizado.

OFF

SUSPENDED ou DISCONNECTED

NULL (nenhuma testemunha)

Serviço pode ser forçado ao servidor espelho (com possível perda de dados).

FULL

SYNCHRONIZING ou SUSPENDED

NULL (nenhuma testemunha)

Serviço pode ser forçado ao servidor espelho (com possível perda de dados).