Erro: #50003826 (correcção SQL)
A Microsoft distribui correcções do Microsoft SQL Server 2008, como um ficheiro para transferência. Uma vez que as correcções são cumulativas, cada nova versão inclui todas as correcções e correcção de todas as correcções de segurança que foram incluídas no anterior do SQL Server 2008.
Sintomas
SQL Server 2008, pode executar uma consulta que insere dados numa tabela temporária. A instrução de inserção contém uma subconsulta que referencia a mesma tabela temporária. Quando executa a consulta, poderá receber uma mensagem de erro semelhante à seguinte:
Msg 605, 21 de nível de estado 3, 1Attempt de linha para obter a página lógica (1:225) na base de dados 2 falhou. Pertence a unidade de atribuição 281474980315136 não para 504403158513025024.
Se executar novamente a consulta, receberá uma mensagem de erro semelhante à seguinte:
Msg 824, nível 24, estado 2, a linha 1
SQL Server detectou um erro de e/s com base em consistência lógico: soma de verificação incorrecta (esperado: 0x50758180; real: 0x15658bfc). Durante a leitura da página (1:336) ocorreu na base de dados ID 2 no deslocamento 0x000000002a0000 no ficheiro ' c:\Programas\Microsoft c:\Programas\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Mensagens adicionais no SQL Server erro registo ou sistema de registo de eventos poderão fornecer mais detalhes. Esta é uma condição de erro grave que ameace a integridade da base de dados e tem de ser corrigida imediatamente. Conclua a verificação de consistência da base de dados (DBCC CHECKDB). Este erro pode ser causado por vários factores; Para mais informações, consulte SQL Server Books Online.
Em alguns casos, também poderá receber uma mensagem de erro semelhante à seguinte:
Msg 601, nível 12, estado 3, do procedimento procedure nome, número de linhanão foi possível continuar a digitalização com NOLOCK devido à circulação de dados.
Uma construção de consulta possíveis que pode produzir estes erros é o seguinte:
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3
Resolução
A correcção deste problema publicada pela primeira vez na actualização cumulativa 3. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
960484 Pacote de actualização cumulativa 3 para SQL Server 2008Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas no anterior do SQL Server 2008. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:
956909 Cria o SQL Server 2008 que foram disponibilizadas após o lançamento do SQL Server 2008Depois de instalar este pacote de actualização cumulativa, terá de activar o sinalizador de rastreio 4135. Para efectuar este procedimento, pode adicionar a -T4135 o parâmetro de arranque. Ou, pode utilizar a instrução dbcc traceon(4135) para uma sessão específica.
Solução
Para contornar este problema, adicione uma coluna que tenha uma chave primária agrupada e uma propriedade de identidade para a tabela temporária. Por exemplo, execute a seguinte instrução para alterar a tabela temporária:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Mais Informações
Apesar de encontrar a mensagem de erro 824 ou 605, a base de dados não danificado. Além disso, estas mensagens de erro referenciam páginas da base de dados tempdb.Para mais informações sobre que ficheiros são alterados e para obter informações sobre quaisquer pré-requisitos para aplicar o pacote de actualização cumulativa que contém a correcção descrita neste artigo da Base de dados de conhecimento da Microsoft, clique no número de artigo seguinte para visualizar a artigo na Microsoft Knowledge Base:
960484 Pacote de actualização cumulativa 3 para SQL Server 2008
Informações do BPA do SQL Server 2008 R2
O SQL Server 2008 R2 prática analisador de melhores (SQL Server 2008 R2 BPA) fornece uma regra para detectar situações em que não tem a actualização cumulativa, ou o sinalizador de rastreio activado para resolver este problema. O SQL Server 2008 R2 BPA suporta o SQL Server 2008 e o SQL Server 2008 R2. Se executar a ferramenta BPA e encontrar um "motor de base de dados - tempdb erros, corrigir ou em falta do sinalizador de rastreio" aviso, tem de verificar a versão do SQL Server e os sinalizadores de rastreio que estão configurados para permitir esta correcção.
Referências
Software de regra |
Título de regra |
Identificador de regra |
Regra BPA do SQL Server 2008 R2 |
erros de TempDB corrigir ou em falta do sinalizador de rastreio |
RID3808 |
Nota Pode activar o sinalizador de rastreio 4135 ou 4199 para activar esta correcção de sinalizador de rastreio. Sinalizador de rastreio 4135 foi introduzido no pacote de actualização cumulativa 3 para SQL Server 2008. Sinalizador de rastreio 4135 também está disponível no SQL Server 2008 Service Pack 1, no SQL Server 2008 Service Pack 2 e no SQL Server 2008 R2. Sinalizador de rastreio 4199 foi introduzido no pacote de actualização cumulativa 7 para SQL Server 2008, no pacote de actualização cumulativa 7 para SQL Server 2008 Service Pack 1 e no pacote de actualização cumulativa 1 para o SQL Server 2008 R2. Para mais informações sobre o sinalizador de rastreio 4199, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
974006 Sinalizador de rastreio 4199 é adicionada ao controlo anteriormente efectuadas várias alterações de optimização de consulta em vários sinalizadores de rastreio Uma vez que a correcção para este problema envolve uma combinação de uma compilação de correcção específico e um sinalizador de rastreio para activar a correcção, incluímos a tabela seguinte para mostrar os diferentes cenários e uma acção recomendada para realizar um para cada cenário.Para mais informações sobre as compilações do SQL Server mais recentes, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
957826 Onde encontrar informações sobre o SQL Server mais recente cria
Referências
Para mais informações sobre a lista de compilações disponíveis após o lançamento do SQL Server 2008, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
956909 Cria o SQL Server 2008 que foram disponibilizadas após o lançamento do SQL Server 2008Para mais informações sobre o modelo de Assistência Incremental para o SQL Server, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
935897 Um modelo de Assistência Incremental está disponível a partir da equipa do SQL Server para proporcionar correcções para problemas comunicadosPara mais informações sobre o esquema de atribuição para actualizações do SQL Server, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
822499Novo esquema de atribuição de nomes para pacotes de actualização de software do Microsoft SQL ServerPara mais informações sobre a terminologia de atualização de software, clique no seguinte número de artigo para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
824684Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft