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çã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).
Para adicionar uma testemunha
Para remover uma testemunha
Para alterar segurança de transação
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). |
Consulte também
Tarefas
Como alterar a segurança da transação em uma sessão de espelhamento de banco de dados (Transact-SQL)