Então, eu sei que ao corrigir os dois servidores de banco de dados principais (SQL Server, para constar), você faz o espelhamento, o failover e, quando estiver tudo em dia, faz o novo espelho, mas e a caixa de testemunhas? É seguro apenas corrigir e reiniciá-lo e (em teoria) ele será retomado?
Piers Karsenbarg's questions
Antigamente, era considerado um grande não-não a fazer select * from table
ou select count(*) from table
por causa do desempenho atingido.
Esse ainda é o caso em versões posteriores do SQL Server (estou usando 2012, mas acho que a pergunta se aplica a 2008 - 2014)?
Edit: Como as pessoas parecem estar me criticando um pouco aqui, estou olhando para isso de um ponto de vista acadêmico/referente, não se é a coisa "certa" a fazer (o que obviamente não é)
Eu tenho algumas ALTER TABLE
declarações que estou executando. Nem todos eles funcionam (eles são o resultado da execução do SQL Data Compare) e eu quero agrupá-los em algumas transações e reverter as instruções se algo der errado.
Isso é possível ou são apenas dados que podem ser revertidos?
Estou usando o SQL Server 2008R2. Ontem à noite, a máquina host na qual meu banco de dados espelhado estava rodando basicamente quebrou. Felizmente, o banco de dados principal estava em um servidor host diferente e estava bom. No entanto...
O princípio está funcionando, mas diz suspenso. Quando tento retomar o espelhamento, recebo um erro no log de erros do SQL, fornecendo um número de erro de 9004.
Um rápido Google desse número de erro retorna com este artigo . (tl;dr: log de transações está danificado)
Então, isso significa que o envio do log de transação entre o princípio e o espelho foi de alguma forma estragado? Como faço para corrigir isso?
É tão simples quanto fazer um backup completo no princípio e um log de transações completo e, em seguida, restaurá-los no banco de dados espelho com a opção norecovery ativada e, em seguida, configurar o espelhamento novamente?
Ou terei que fazer algo mais drástico?
Não estou tendo problemas com a parte real do espelhamento, mas devido ao uso de tabelas temporárias, o IIS está oscilando um pouco se ocorrer um failover (ainda estou testando algumas coisas, então sou eu que estou causando o failover) .
É possível (ou mesmo uma boa ideia) espelhar tempdb
? Ou devo apenas aceitar que algumas pessoas podem ser expulsas se o banco de dados principal não estiver acessível por qualquer motivo.
Estou usando o ASPState para que os dois servidores da Web (atrás de um balanceador de carga que permite sticky sessions) possam obter os mesmos dados de sessão.
Estou tentando configurar o espelhamento de banco de dados no SQL Server 2008R2. Fiz um backup completo e um backup transacional do meu banco de dados principal e restaurei os dois arquivos WITH NORECOVERY
.
No entanto, meu banco de dados espelho agora está travado no RECOVERING
modo e, quando clico em "iniciar espelhamento" no meu principal, ele diz que não pode se conectar.
O que estou fazendo errado?
Editar: provavelmente devo afirmar que meu banco de dados é bastante grande (o arquivo mdf tem cerca de 4,8 GB), então pode ser por isso.
Edit2: Eu também tentei fazer isso com os dois firewalls desligados, então sei que não é um problema de firewall.
Edit3: Eu executei o SQL que Mark sugeriu. Os principais resultados estão aqui: http://piersonthe.net/principal.xls e mirror estão aqui: http://piersonthe.net/mirror.xls
Vale ressaltar que recebi o seguinte erro ao executar a consulta no mirror: Msg 927, Level 14, State 2, Line 1 Database 'RHSCMSSites' not can be open. Está no meio de uma restauração.