Sintomas
Suponha que você tenha um banco de dados habilitado para FILESTREAM em uma instância do Microsoft SQL SQL Server. Quando você inicia uma transação e usa a API .NET SqlFileStream para abrir um arquivo Filestream, a tarefa pode falhar e lançar uma exceção devido a fatores externos.
Se você abrir o arquivo novamente usando SqlFileStream na mesma transação e confirmação, poderá receber mensagens de erro internas semelhantes às seguintes:
Observação
data e hora, spids, Desconhecido, Erro: 5571<c/> Severidade: 23<c/> Estado: 3.
data hora, spids, Desconhecido, Interno Erro FILESTREAM: falha ao acessar a tabela de coleta de lixo.
Se você executar dbcc checktable ('sys.filestream_tombstone_2073058421'), poderá receber a seguinte mensagem de erro:
Observação
Msg 8951, Nível 16, Estado 1, Line LineNumber
Erro de tabela: table dbcc checktable ('sys.filestream_tombstone_2073058421') (ID IDNumber). A linha de dados não tem uma linha de índice correspondente no índice 'FSTSNCIdx' (IDIDNumber). Possíveis chaves ausentes ou inválidas para a correspondência da linha de índice:
Resolução
A correção para esse problema está incluída nas seguintes atualizações para o SQL Server:
Atualização cumulativa 13 para o SQL Server 2017
Atualização Cumulativa 1 para o SQL Server 2014 Service Pack 3
Atualização cumulativa 15 para o SQL Server 2014 Service Pack 2
Sobre compilações do SQL Server
Cada nova compilação do SQL Server contém todos os hotfixes e correções de segurança que estavam na compilação anterior. Recomendamos que você instale o build mais recente para a sua versão do SQL Server:
Versões de compilação do SQL Server 2017
Versões de compilação do SQL Server 2014
Solução alternativa
Para contornar esse problema, recompile o índice do banco de dados usando o comando DBCC CHECKTABLE .
Status
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Referências
Saiba mais sobre a terminologia padrão que a Microsoft usa para descrever atualizações de software.