Oi
Continuarei explicando os instantâneos de banco de dados no SQL Server neste artigo.
Leia os artigos anteriores antes deste post.
Instantâneos do banco de dados do SQL Server -1
Instantâneos do banco de dados do SQL Server -2
Instantâneos do banco de dados do SQL Server -3
Este erro é muito assustador e uma perda financeira para o banco de dados de produção.
Usaremos o banco de dados Snapshot para retornar desse erro. Usamos a tabela AWBuildVersion do banco de dados Snapshot para criar a tabela AWBuildVersion no banco de dados AdventureWorks. Usaremos Select * into command para isso. A captura de tela após a execução do script é a seguinte. Conforme indicado pela linha vermelha, Dropped Table é retornado ao banco de dados de origem com seus dados.
Vamos fazer outro exemplo semelhante em termos de ser mais compreensível. Vamos excluir os dados de qualquer tabela e retorná-los do banco de dados Snapshot novamente. Conforme descrito na Imagem 1.1 abaixo, a tabela BillOfMaterials na parte inferior do banco de dados ProductionWorks está sendo excluída do banco de dados AdventureWorks. Quando selecionamos a contagem Select ao mesmo tempo, o registro 0 é consultado conforme mostrado na imagem abaixo.
Usamos o banco de dados Snapshot novamente para retornar desse erro. Como em 2.1 acima, estamos fazendo a inserção do mesmo esquema e tabela do banco de dados Snapshot na tabela correspondente no banco de dados de origem. Da mesma forma, o mesmo número de registros de linha são inseridos conforme mostrado na imagem 2.2 quando consultamos Select Count.
Finalmente, vamos fazer um erro de administrador do banco de dados Snapshot, e desta vez vamos restaurar o banco de dados Source do banco de dados Snaphot. Assim, o instantâneo do banco de dados AdventureWorks está voltando ao estado inicial. Estou excluindo os dados da tabela BillOfMaterials do esquema de produção e, ao mesmo tempo, eliminei a tabela SalesOrderDetail no esquema Sales. A captura de tela é a seguinte. Como os dados da tabela BillOfMaterials na parte inferior do Esquema de produção foram excluídos, a tabela SalesOrderDetail não aparece porque foi eliminada.
Fizemos muitas alterações no banco de dados de origem, dissemos que essas alterações são sempre gravadas no Sparse File. A imagem a seguir mostra a versão final do arquivo Sparse. Embora o tamanho original 1 não tenha sido alterado, o número 2 do arquivo Esparso original aumentou. A razão para isso, como eu disse, é que todas as alterações feitas no banco de dados Source são escritas aqui. Portanto, quando o usuário lê os dados alterados, ele lê do arquivo esparso. Se o usuário consultar dados inalterados, eles serão lidos do banco de dados de origem.
Agora vamos voltar ao Snapshot.
SQL Server 2017 Database Snaphot Restore coderestore
database
AdventureWorks
from
database_snapshot=
'AdventureWorksSnaphot'
Podemos consultar todas as tabelas descartadas e excluídas após restaurar o Snapshot conforme mostrado na imagem acima.