Usando o espelhamento de banco de dados
Aplica-se: SQL Server
Observação
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Use Grupos de disponibilidade AlwaysOn em vez disso.
O espelhamento de banco de dados, apresentado no SQL Server 2005 (9.x), é uma solução que visa aumentar a disponibilidade do banco de dados e a redundância de dados. O OLE DB Driver for SQL Server fornece suporte implícito ao espelhamento de banco de dados, de forma que, depois que ele for configurado para o banco de dados, o desenvolvedor não precise escrever nenhum código nem executar qualquer outra ação.
O espelhamento de banco de dados, que é implementado para cada banco de dados, mantém uma cópia de um banco de dados de produção do SQL Server em um servidor em espera. Esse servidor é um servidor em espera ativa ou passiva, dependendo da configuração e do estado da sessão de espelhamento de banco de dados. Um servidor em espera ativa dá suporte ao failover rápido sem perda de transações confirmadas, e um servidor em espera passiva dá suporte ao serviço de imposição (com possível perda de dados).
O banco de dados de produção é chamado de banco de dados principal, e a cópia em espera é chamada de banco de dados espelho. O banco de dados principal e o banco de dados espelho precisam residir em instâncias separadas do SQL Server (instâncias do servidor) e, se possível, em computadores separados.
A instância do servidor de produção, chamado servidor principal, se comunica com a instância do servidor em espera, chamado servidor espelho. Os servidores principal e espelho atuam como parceiros dentro de uma sessão de espelhamento de banco de dados. Se o servidor principal falhar, o servidor espelho poderá transformar seu banco de dados no banco de dados principal por meio de um processo chamado failover. Por exemplo, Parceiro_A e Parceiro_B são dois servidores parceiros, com o banco de dados principal inicialmente no Parceiro_A como servidor principal e o banco de dados espelho residindo no Parceiro_B como o servidor espelho. Se o Parceiro_A ficar offline, o banco de dados no Parceiro_B pode fazer failover para se tornar o banco de dados principal atual. Quando o Parceiro_A ingressar novamente na sessão de espelhamento, ele se tornará o servidor espelho e seu banco de dados se tornará o banco de dados espelho.
Configurações alternativas de espelhamento de banco de dados oferecem diferentes níveis de desempenho e segurança de dados, e dão suporte a diversas formas de failover. Para obter mais informações, confira Espelhamento de banco de dados (SQL Server).
É possível usar um alias ao especificar o nome de banco de dados espelho.
Observação
Para obter informações sobre tentativas de conexão inicial e tentativas de reconexão com um banco de dados espelho, confira Conectar clientes a uma sessão de espelhamento de banco de dados (SQL Server).
Considerações sobre programação
Quando o servidor do banco de dados principal falhar, o aplicativo cliente receberá erros em resposta a chamadas API, o que indica que a conexão com o banco de dados foi interrompida. Quando isto acontece, todas as alterações não confirmadas do banco de dados são perdidas e a transação atual é revertida. Se isso ocorrer, o aplicativo deve fechar a conexão (ou liberar o objeto da fonte de dados) e abri-la novamente. A conexão é redirecionada de forma transparente para o banco de dados espelho, que agora atua como servidor principal.
Quando uma conexão é estabelecida, o servidor principal envia a identidade de seu parceiro de failover ao cliente a ser usado quando ocorrer failover. No caso de um aplicativo tentar estabelecer uma conexão depois que o servidor principal falhou, o cliente não sabe a identidade do parceiro de failover. Para que os clientes possam lidar com este cenário, uma propriedade de inicialização e uma palavra-chave de cadeia de conexão associada permitem que o próprio cliente especifique a identidade do parceiro de failover. O atributo do cliente é usado apenas nesse cenário; se o servidor principal estiver disponível, ele não será usado. Se o servidor do parceiro de failover fornecido pelo cliente não se referir a um servidor que está atuando como um parceiro de failover, a conexão será recusada pelo servidor. Para que os aplicativos possam se adaptar a alterações de configuração, a identidade do parceiro de failover real pode ser determinada inspecionando o atributo depois que a conexão for estabelecida. Considere o armazenamento em cache das informações do parceiro para atualizar a cadeia de conexão ou criar uma estratégia de repetição no caso de falha da primeira tentativa de estabelecer uma conexão.
Observação
Especifique explicitamente o banco de dados a ser usado por uma conexão, se desejar usar esse recurso em um DSN, uma cadeia de conexão ou uma propriedade/atributo da conexão. O Driver do OLE DB para SQL Server não tentará fazer failover para o banco de dados parceiro se isso não for feito.
O espelhamento é um recurso do banco de dados. Talvez os aplicativos que usam vários bancos de dados não consigam explorar esse recurso.
Além disso, os nomes de servidor não diferenciam maiúsculas de minúsculas, mas os nomes de banco de dados o fazem. Portanto, certifique-se de usar as mesmas maiúsculas e minúsculas em DSNs e cadeias de conexões.
OLE DB Driver for SQL Server
O OLE DB Driver for SQL Server dá suporte ao espelhamento de banco de dados por meio de atributos de cadeia de conexão e conexão. A propriedade SSPROP_INIT_FAILOVERPARTNER foi adicionada ao conjunto de propriedades DBPROPSET_SQLSERVERDBINIT e a palavra-chave FailoverPartner é um novo atributo de cadeia de conexão para DBPROP_INIT_PROVIDERSTRING. Para obter mais informações, confira Como usar palavras-chave de cadeia de conexão com o Driver do OLE DB para SQL Server.
O cache de failover é mantido enquanto o provedor estiver carregado, ou seja, até CoUninitialize ser chamado ou enquanto o aplicativo tiver uma referência a algum objeto gerenciado pelo OLE DB Driver for SQL Server, como um objeto da fonte de dados.
Para obter detalhes sobre o suporte do Driver do OLE DB para SQL Server para espelhamento de banco de dados, confira Propriedades de inicialização e de autorização.
Consulte Também
Recursos do Driver do OLE DB para SQL Server
Conectar clientes a uma sessão de espelhamento de banco de dados (SQL Server)
Espelhamento de banco de dados (SQL Server)