Eu sei que enquanto o banco de dados está marcado como usuários suspeitos não pode iniciar novas transações, e o único acesso é via modo de emergência que dá acesso somente leitura. Eu quero saber como as transações são tratadas neste caso
- primeiro quando um banco de dados é marcado como suspeito
- em segundo lugar quando usamos o modo de emergência
Eles são revertidos normalmente?
Obrigado.
Pode haver outros motivos, mas o mais comum é quando você tem algum problema com o arquivo de dados ou arquivo de log do banco de dados e ele passa pela recuperação de falhas após o SQL Server ser reiniciado, pois o SQL Server não poderá recuperar o banco de dados devido a corrupção , informações incorretas ou ausentes em um dos arquivos (dados ou log) que ele possui para marcar o banco de dados como suspeito. Aprenda como tornar o banco de dados suspeito (apenas para fins de teste. Escusado será dizer que, por favor, não tente isso no Prod e até mesmo no UAT).
Em qualquer caso, você deseja obter acesso ao conteúdo do banco de dados, mas não pode porque foi marcado como suspeito. Você pode então colocar o banco de dados no modo de emergência, que é um "banco de dados inconsistente" fornecido a você sem fazer uma recuperação completa de falhas. Observe que nem sempre você pode ser bem-sucedido.
Quando você usa o modo de emergência, você perde toda a possibilidade de colocar o banco de dados online, então você o força a "meio que ficar online com dados inconsistentes" usando o modo de emergência. Quando você faz isso, nenhuma recuperação acontece e você recebe apenas acesso de leitura ao banco de dados inconsistente. Depois disso, quando você executa o checkdb com
repair_allow_data_loss
, todos os tipos de ações são tomadas para colocar o banco de dados online em estado consistente; issorepair_allow_data_loss
removerá qualquer coisa que possa bloquear o banco de dados para ficar online.Colocar o banco de dados em emergência e depois recuperá-lo não deve ser tratado como um método para resolver problemas de banco de dados suspeitos. A restauração de um bom backup deve ser a maneira preferida.
Também sugiro que você leia o blog de Paul Randal
Inicialmente gostaria de definir o que significa transação: Uma transação é uma unidade de trabalho que é executada em um banco de dados. Transações são unidades ou sequências de trabalho realizadas em uma ordem lógica, seja de forma manual por um usuário ou automaticamente por algum tipo de programa de banco de dados.
quando uma transação é enviada para o servidor de banco de dados, ele reserva alguma memória, localiza a localização do banco de dados, tenta acessá-lo e começa a procurar a localização dos dados dentro do banco de dados.
O banco de dados do SQL Server vai para o modo suspeito devido a muitos motivos abaixo são os mais comuns, se algum problema importante acontecer com o banco de dados, ele se tornará totalmente \ parcialmente inacessível e o SQL Server não poderá iniciar a transação nele.
O modo de emergência do SQL Server (modo de reparo para corrigir "banco de dados inconsistente") é usado para recuperar o banco de dados de qualquer falha se o banco de dados estiver acessível, já que o banco de dados está no modo de reparo, você pode executar, editar em algumas tabelas do sistema e ler do normal tabelas para garantir que o banco de dados não tenha nenhum problema após o reparo.