Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Note
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Em vez disso, use os grupos de disponibilidade Always On.
O espelhamento de bases de dados, introduzido no SQL Server 2005 (9.x), é uma solução para aumentar a disponibilidade da base de dados e a redundância de dados. O OLE DB Driver for SQL Server fornece suporte implícito para espelhamento de bases de dados, pelo que o programador não precisa de escrever qualquer código ou tomar qualquer outra ação depois de configurado para a base de dados.
O espelhamento de bases de dados, que é implementado por base de dados, mantém uma cópia de uma base de dados de produção SQL Server num servidor de espera. Este servidor é um servidor de espera quente ou morno, dependendo da configuração e do estado da sessão de espelhamento da base de dados. Um servidor de espera quente suporta failover rápido sem perda de transações comprometidas, e um servidor de espera quente suporta forcing service (com possível perda de dados).
A base de dados de produção é chamada de base de dados principal, e a cópia de reserva é chamada de base de dados espelhada. A base de dados principal e a base de dados espelhada devem residir em instâncias separadas do SQL Server (instâncias do servidor), e devem residir em computadores separados, se possível.
A instância do servidor de produção, chamada servidor principal, comunica com a instância do servidor de reserva, chamada servidor espelho. Os servidores principal e os servidores espelho atuam como parceiros dentro de uma sessão de espelhamento de base de dados. Se o servidor principal falhar, o servidor espelho pode transformar a sua base de dados na base de dados principal através de um processo chamado failover. Por exemplo, Partner_A e Partner_B são dois servidores parceiros, com a base de dados principal inicialmente em Partner_A como servidor principal, e a base de dados espelhada a residir em Partner_B como servidor espelho. Se Partner_A ficar offline, a base de dados na Partner_B pode fazer failover para se tornar a base de dados principal atual. Quando Partner_A volta a juntar-se à sessão de espelhamento, torna-se o servidor espelho e a sua base de dados torna-se a base de dados espelhada.
Configurações alternativas de espelhamento de bases de dados oferecem diferentes níveis de desempenho e segurança de dados, e suportam diferentes formas de failover. Para mais informações, consulte Espelhamento de Base de Dados (SQL Server).
É possível usar um alias ao especificar o nome da base de dados espelhada.
Note
Para informações sobre tentativas iniciais de ligação e tentativas de reconexão a uma base de dados espelhada, veja Conectar Clientes a uma Sessão de Espelhamento de Base de Dados (SQL Server).
Considerações sobre programação
Quando o servidor principal da base de dados falha, a aplicação cliente recebe erros em resposta a chamadas de API, que indicam que a ligação à base de dados foi perdida. Quando isto acontece, quaisquer alterações não comprometidas na base de dados são perdidas e a transação atual é revertida. Se isto acontecer, a aplicação deve fechar a ligação (ou libertar o objeto fonte de dados) e reabri-la. A ligação é redirecionada de forma transparente para a base de dados espelhada, que agora atua como servidor principal.
Quando é estabelecida uma conexão, o servidor principal envia ao cliente a identificação do seu servidor parceiro de contingência, para ser usada em caso de contingência. Quando uma aplicação tentou estabelecer uma ligação após a falha do servidor principal, o cliente não conhece a identidade do parceiro de failover. Para permitir que os clientes tenham a oportunidade de lidar com este cenário, uma propriedade de inicialização e uma palavra-chave cadeia de ligação associada permitem ao cliente especificar a identidade do parceiro de failover por si só. O atributo cliente é usado apenas neste cenário; se o servidor principal estiver disponível, este não é utilizado. Se o servidor parceiro de failover fornecido pelo cliente não se referir a um servidor a atuar como parceiro de failover, a ligação é recusada pelo servidor. Para permitir que as aplicações se adaptem às alterações de configuração, a identidade do parceiro de failover real pode ser determinada inspecionando o atributo após a ligação ter sido estabelecida. Deve considerar armazenar em cache a informação do parceiro para atualizar a cadeia de ligação ou criar uma estratégia de retentativa caso a primeira tentativa de ligação falhe.
Note
Deve especificar explicitamente a base de dados a ser usada por uma ligação se quiser usar esta funcionalidade numa DSN, cadeia de ligação ou propriedade/atributo de conexão. O OLE DB Driver for SQL Server não tentará fazer failover para a base de dados parceira se isso não for feito.
O espelhamento é uma funcionalidade da base de dados. Aplicações que utilizam múltiplas bases de dados podem não conseguir explorar esta funcionalidade.
Além disso, os nomes dos servidores não distinguem maiúsculas e minúsculas, mas os nomes das bases de dados são distinguíveis de maiúsculas e minúsculas. Deves, portanto, certificar-te de que usas a mesma carcaça nos DSNs e nas strings de ligação.
Driver OLE DB para o SQL Server
O OLE DB Driver for SQL Server suporta espelhamento de base de dados através de atributos de ligação e cadeia de ligação. A propriedade SSPROP_INIT_FAILOVERPARTNER foi adicionada ao conjunto de propriedades DBPROPSET_SQLSERVERDBINIT, e a palavra-chave FailoverPartner é um novo atributo cadeia de ligação para DBPROP_INIT_PROVIDERSTRING. Para mais informações, veja Usar Palavras-chave de String de Ligação com OLE DB Driver for SQL Server.
A cache de failover é mantida enquanto o fornecedor estiver carregado, ou seja, até ser chamado o CoUninitialize ou desde que a aplicação tenha uma referência a algum objeto gerido pelo OLE DB Driver for SQL Server, como um objeto fonte de dados.
Para detalhes sobre o suporte do OLE DB Driver for SQL Server para espelhamento de bases de dados, consulte Propriedades de Inicialização e Autorização.