Sintomas
Considere o seguinte cenário:
-
Você tem uma tabela FILESTREAM muito grande.
-
Você executa uma consulta exclusão de linhas na tabela FILESTREAM que cria um plano de consulta caro, como um que é filtrado por uma junção interna para outra tabela grande no sistema.
-
O otimizador de consultas escolhe um plano de execução paralela.
Nesse cenário,uma ssertion ocorrerá e você poderá receber mensagens de erro semelhantes às seguintes no log de erros do SQL Server:
DateTime spid SpidNumber erro: 5553, severidade: 20, estado: 6.
Erro interno de DateTime spid SpidNumber do SQL Server. O Gerenciador de FILESTREAM não pode continuar com o comando atual.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Resolução
O problema foi corrigido nas seguintes atualizações cumulativas do SQL Server:
Sobre atualizações cumulativas do SQL Server:
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior atualização cumulativa. Confira as atualizações cumulativas mais recentes do SQL Server:
Solução alternativa
Ta solução alternativa para esse problema,a ou y pode usar o seguinte método:
Mova a consulta junção interna para uma instrução separada e salve os resultados em uma tabela temporária. Em seguida, execute a consulta exclusão filtrada pelas entradas na tabela temporária. Além disso, você pode aumentar o limite de custo do paralelismo para forçar o otimizador a serializar o plano de consulta.
Por exemplo:
Selecione RefTable. alias em #T de DB. dbo. Outertable INNER JOIN DB. dbo. RefTable ON RefTable. alias = Outertable. alias
ONDE Outertable. alias > 30006 e Outertable. alias < 30010
EXCLUIR do DB. dbo. TableName ONDE alias IN (SELECT * FROM #T)
Referências
Saiba mais sobre a terminologia que A Microsoft usa para descrever atualizações de software.