Eu tenho um caso muito especial em que tenho trabalhado por vários dias. Eu tenho um banco de dados muito grande do SQL Server 2008 (cerca de 2 TB) que contém 500 grupos de arquivos para oferecer suporte a tabelas particionadas muito grandes. Recentemente, tivemos uma falha catastófica em uma das unidades e perdemos vários grupos de arquivos e o banco de dados tornou-se acessível.
Temos feito backups de grupos de arquivos diariamente, mas devido a outros problemas, perdemos nosso backup mais recente do log e do grupo de arquivos primário. Temos todos os dados armazenados em backup, mas o backup primário do grupo de arquivos é antigo.
Não houve alterações no esquema desde o backup primário do grupo de arquivos, mas os lsn's agora estão todos fora de sincronia e não podemos recuperar os dados.
Eu tentei tudo o que pude pensar (e tentei praticamente todos os truques e truques que eu consegui no google), mas ainda termino no mesmo ponto em que recebo mensagens dizendo que os arquivos do grupo de arquivos x não correspondem ao primário grupo de arquivos. Eu estou agora no ponto de tentar editar as tabelas do sistema (nós temos um ambiente temporário separado para fazer isso, então não estamos preocupados em corromper quaisquer bancos de dados de produção). Eu tentei atualizado sys.sysdbreg, sys.sysbrickfiles e sys.sysprufiles para tentar enganar o SQL em pensar todos os arquivos estão on-line, mas um "Select * From OPENROWSET (TABLE DBPROP, 5)" mostra um estado de banco de dados diferente do que Vejo em sys.sysdbreg.
Agora estou pensando que preciso de alguma forma editar os cabeçalhos dos arquivos de dados reais para tentar alinhar os lsn's com o primário.
Agradeço qualquer ajuda que alguém possa me dar aqui, mas por favor não responda com coisas do tipo "você não deve editar o mdf, os arquivos ndf ..." ou "veja o artigo do msdn ....", etc. Este é um caso de emergência avançado e eu preciso de um hack real para que possamos apenas obter os dados neste banco de dados corrompido e exportar para um novo banco de dados. Eu sei que há uma maneira de fazer isso, mas não saber o que as funções do sistema DBPROP faz (ou seja, ele olha para as tabelas do sistema ou realmente abre o arquivo) está me impedindo de tentar descobrir como enganar o SQL para me permitir para ler esses arquivos.
Obrigado por qualquer ajuda.