KB2421014 - FIX: "Ocorreu um erro grave na mensagem de erro do comando atual" quando utiliza a função Freetexttable ou a função Containstable numa vista indexada numa consulta CTE no SQL Server 2008 ou no SQL Server 2008 R2

A Microsoft distribui o Microsoft SQL Server 2008 ou o Microsoft SQL Server 2008 R2 corre como um ficheiro transferível. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção SQL Server 2008 ou SQL Server 2008 R2.

Sintomas

Assuma que tem uma instância nomeada no Microsoft SQL Server 2008 ou no Microsoft SQL Server 2008 R2 instalado num servidor. Quando executa uma consulta de Expressão de Tabela Comum (CTE) que utiliza a função Freetexttable ou Containstable numa vista indexada, a consulta CTE falha e ocorre uma exceção de violação de acesso. Além disso, recebe a seguinte mensagem de erro:

Msg 0, Nível 11, Estado 0, Linha 0 Ocorreu um erro grave no comando atual. Os resultados, se houver, devem ser descartados.

Por exemplo, a exceção de violação de acesso ocorre quando executou o seguinte código:

WITH CTE AS  (select [Key] as Key, [Rank] from FREETEXTTABLE(< indexed view name >, *, '< search string >'))  SELECT * FROM CTE  

Resolução

Informação de atualização cumulativa

Pacote de serviço SQL Server 2008 2

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 4 para o SQL Server 2008 Service Pack 2. Para obter mais informações sobre este pacote de atualização cumulativa, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2527180 Pacote de atualização cumulativo 4 para SQL Server 2008 Service Pack 2Nota Como as construções são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção SQL Server 2008. A Microsoft recomenda que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2402659 O SQL Server 2008 constrói que foram lançados após o lançamento do SQL Server 2008 Service Pack 2 Os hotfixes do Microsoft SQL Server 2008 são criados para pacotes específicos de serviços sql Server. Tem de aplicar um hotfix SQL Server 2008 Service Pack 2 a uma instalação do SQL Server 2008 Service Pack 2. Por predefinição, qualquer hotfix que seja fornecido num pacote de serviços SQL Server está incluído no próximo pacote de serviços sql Server.

SQL Server 2008 R2

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 4. Para obter mais informações sobre como obter este pacote de atualização cumulativa para SQL Server 2008 R2, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2345451 Pacote de atualização cumulativa 4 para SQL Server 2008 R2 Nota Como as construções são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção R2008 do SQL Server 2008. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

981356 O SQL Server 2008 R2 constrói que foram lançados após o lançamento do SQL Server 2008 R2

Solução

Para contornar este problema, utilize um dos métodos seguintes:

  • Utilize uma vista, uma tabela temporária ou uma variável de tabela em vez de um CTE para armazenar os resultados intermédios.

  • Atualize a consulta para utilizar uma tabela derivada ou uma sub-consulta. Isto elimina a necessidade de utilizar um CTE.

Estado

A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".

Referências

Para obter mais informações sobre como usar expressões de mesa comuns, visite o seguinte website da Microsoft:

Como usar expressões de mesa comunsPara obter mais informações sobre a função Freetexttable (Transact-SQL), visite o seguinte website da Microsoft:

FREETEXTTABLE (Transact-SQL)Para obter mais informações sobre a função Containstable (Transact-SQL), visite o seguinte website da Microsoft:

CONTÉMT (Transact-SQL)Para obter mais informações sobre como criar visualizações indexadas, visite o seguinte website da Microsoft:

Como criar vistas indexadasPara obter mais informações sobre o Modelo de Manutenção Incremental para O Servidor SQL, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

935897 Um Modelo de Manutenção Incremental está disponível na equipa do SQL Server para entregar hotfixes para problemas relatadosPara obter mais informações sobre o esquema de nomeação para atualizações do SQL Server, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

822499Novo esquema de nomeação para pacotes de atualização de software do Microsoft SQL ServerPara obter mais informações sobre a terminologia da atualização do software, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

824684Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×