A Microsoft distribui correções do Microsoft SQL Server 2005, Microsoft SQL Server 2008 e Microsoft SQL Server 2008 R2 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 a versão anterior do SQL Server 2005, SQL Server 2008 ou SQL Server 2008 R2.
Sintomas
Tenha em conta o seguinte cenário:
- Ativar a opção ALLOW_SNAPSHOT_ISOLATION em um Microsoft SQL Server 2005, um Microsoft SQL Server 2008 ou um Microsoft SQL Server 2008 R2 banco de dados.
- Executar uma operação de controlo de versões numa tabela. Por exemplo, atualiza a tabela.
- Desative o nível de isolamento do instantâneo na base de dados.
- Você atualiza uma coluna de chave de índice em um registro que contém informações de controle de versão.
- Recria o índice online sobre a tabela.
Nesse cenário, ocorre um erro de asserção e você recebe as seguintes mensagens no log de erros SQL Server:
Nota
<Data><Hora><spid> * BEGIN STACK DUMP:
<Data><Hora><spid> *<Data><Hora><spid>
<Data><Hora><spid> *
<Data><Hora><spid> * Localização: AppendOnlyVerStoreMgr.cpp:731
<Data><Hora><spid> * Expressão: 0
<Data><Hora><spid> * SPID:<spid>
<Data><Hora><spid> * ID do processo: 6328
<Data><Hora><spid> * Descrição: Não é possível localizar o registro de versão e a página não está alocada. Estado = 3
<Data><Hora><spid> *
<Data><Hora><spid> * Buffer de entrada 170 bytes -
<Data><Hora><spid> * ALTER INDEX <Nome> da tabela ON <Index> REBUILD WITH(O
<Data><Hora><spid> * NLINE = ON)
Causa
Este problema ocorre porque as informações de controlo de versões de um novo registo da chave de índice são copiadas do registo antigo da chave de índice. Portanto, o erro ocorre quando o índice é reconstruído.
Resolução
Informações de atualização cumulativa
SQL Server 2008 R2
A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 5. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2008 R2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2438347 pacote de atualização cumulativa 5 para SQL Server 2008 R2 Observação Como as compilaçõ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 SQL Server 2008 R2 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse 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 As compilações SQL Server 2008 R2 lançadas após o lançamento do SQL Server 2008 R2
SQL Server 2005 Service Pack 4
A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 1 para o SQL Server 2005 Service Pack 4. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2464079 Pacote de atualizações cumulativas 1 para SQL Server 2005 Service Pack 4Nota Como as compilaçõ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 SQL Server 2005 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse 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:
2485757 As compilações SQL Server 2005 lançadas após o lançamento do SQL Server 2005 Service Pack 4 Os hotfixes do Microsoft SQL Server 2005 são criados para service packs SQL Server específicos. Tem de aplicar uma correcção do SQL Server 2005 Service Pack 4 a uma instalação do SQL Server 2005 Service Pack 4. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.
SQL Server 2005 SP3
A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 12. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2005 SP3, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:
2345449 Pacote de atualizações cumulativas 12 para SQL Server 2005 Service Pack 3 Observação Como as compilações são cumulativas, cada novo lançamento de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2005 SP3 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse 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:
960598 As compilações do SQL Server 2005 lançadas após o lançamento do SQL Server 2005 Service Pack 3
SQL Server 2008 Service Pack 1
A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 11 para SQL Server 2008 Service Pack 1. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2413738 Pacote de atualizações cumulativas 11 para SQL Server 2008 Service Pack 1Nota Como as compilaçõ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 SQL Server 2008 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse 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:
970365 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 1 Os hotfixes do Microsoft SQL Server 2008 são criados para service packs SQL Server específicos. Tem de aplicar uma correção do SQL Server 2008 Service Pack 1 a uma instalação do SQL Server 2008 Service Pack 1. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.
SQL Server 2008 Service Pack 2
A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 2 para SQL Server 2008 Service Pack 2. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2467239 Pacote de atualizações cumulativas 2 para SQL Server 2008 Service Pack 2Nota Como as compilaçõ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 SQL Server 2008 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse 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 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 2 Os hotfixes do Microsoft SQL Server 2008 são criados para service packs SQL Server específicos. Tem de aplicar uma correção do SQL Server 2008 Service Pack 2 a uma instalação do SQL Server 2008 Service Pack 2. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.
Solução
Para contornar este problema, reconstrua o índice desta base de dados definindo a opção ONLINE como DESLIGADO na consulta.
Estado
A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".
Referências
Para obter mais informações sobre operações de indexação online, visite o seguinte site da Microsoft:
Informações gerais sobre operações de índice
Para obter mais informações sobre os detalhes das operações de indexação online, visite o seguinte site da Microsoft: