MSSQLSERVER_3056
Aplica-se: SQL Server
Detalhes
Atributo | Valor |
---|---|
Nome do produto | SQL Server |
ID do evento | 3056 |
Origem do Evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbólico | DMPDB_INVALID_FSDATA |
Texto da mensagem | A operação de backup detectou um arquivo inesperado em um contêiner FILESTREAM. A operação de backup irá continuar e incluir o arquivo '%ls'. |
Explicação
O erro 3056 será gerado se existirem arquivos no contêiner FILESTREAM (pasta) que não são criados pelo SQL Server. A operação de backup incluirá esse arquivo, mas isso causará um estado inconsistente dos componentes do fluxo de arquivos no banco de dados.
Aviso
O contêiner FILESTREAM é uma pasta gerenciada pelo SQL Server. Não adicione ou remova arquivos na pasta FILESTREAM
Ação do usuário
A mensagem de erro inclui o nome do arquivo inesperado. Investigue como esse arquivo foi parar nessa pasta.
Encerre seus backups e verifique se os backups anteriores desse banco de dados não foram substituídos ou perdidos
Execute um DBCC CHECKB completo no banco de dados para o qual o backup falhou com o erro 3056. Não use com physical_only
Examine a saída DBCC CHECKB completamente; erros podem ser detectados durante diferentes fases e estar separados por centenas de linhas para os mesmos objetos
- As últimas linhas da saída CHECKDB fornecerão uma contagem resumida de erros. Verifique se você localizou a mensagem individual para cada um dos erros contados
- Você encontra um erro semelhante a este na parte inferior:
CHECKDB found 1 allocation errors and 1 consistency errors in database 'AG_Filestream'.
Se os únicos erros relatados forem 7908 ou 7906, você poderá localizar os arquivos reais relatados no erro. Os erros podem ser assim, por exemplo:
Msg 7906, Level 16, State 1, Line 8 Database error: The file "\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2\NO_USER_FILE_SHOULD_BE_HERE.txt" is not a valid FILESTREAM file in container ID 65537. Msg 7908, Level 16, State 1, Line 8 Table error: The file "\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2\NO_USER_FILE_SHOULD_BE_HERE.txt" in the rowset directory ID aaaabbbb-0000-cccc-1111-dddd2222eeee is not a valid FILESTREAM file in container ID 65537.
Observação
É recomendável que você teste essas etapas em uma cópia de backup/teste do banco de dados antes de tentar fazê-las no sistema de produção.
Para localizar os arquivos, execute este comando para localizar a pasta física do grupo FILESTREAM
SELECT name, physical_name, state_desc, type_desc FROM sys.database_files WHERE type_desc = 'FILESTREAM'
No Windows Explorer, abra a subpasta identificada no erro 7906 ou 7908 (por exemplo, \782fc3bb-dc63-4ab8-9de6-e9dfa36454d2)
Em seguida, localize o arquivo identificado na mensagem de erro (por exemplo, NO_USER_FILE_SHOULD_BE_HERE.txt) e faça uma cópia desse arquivo em um diretório temporário como backup.
Depois de garantir que você tenha uma cópia, você pode remover o arquivo da pasta
Tome medidas para entender por que e como esse(s) arquivo(s) foi(foram) adicionado(s) nesta pasta do sistema e tome medidas para evitar mais ocorrências
- Certifique-se de que as permissões adequadas estejam em vigor para o acesso do usuário a essa(s) pasta(s) FILESTREAM
- Entenda e certifique-se de que nenhum aplicativo esteja criando arquivos na(s) pasta(s) FILESTREAM
Execute um novo DBCC CHECKDB e verifique se ele não gera erros
Se houver outros erros CHECKDB, incluindo 7903,7904,7905,7907, houve corrupção ou violação da pasta SQL Server FILESTREAM além da mera adição inválida de arquivos externos. Esta situação não pode ser reparada manualmente
- Verifique se há problemas em seu hardware e resolva-os
- Certifique-se de que seu sistema esteja protegido contra malware. Observe que os arquivos de dados FILESTREAM devem ser excluídos da verificação do software antivírus. Consulte Recomendações e diretrizes para melhorar o desempenho do FILESTREAM
- Em seguida, restaure a partir do backup de banco de dados íntegro
Executar DBCC CHECKDB
Se você executar DBCC CHECKDB, ele poderá relatar o erro 7908 ou 7906, mas não poderá repará-lo.
Restaurar a partir de backup
Se o problema não estiver relacionado ao hardware e um backup limpo conhecido estiver disponível, restaure o banco de dados do backup