CORRECÇÃO: SELECT * FROM SYSINDEXES em um banco de dados que é atualizado para o SQL Server 2000 pode causar uma violação de acesso

Traduções deste artigo Traduções deste artigo
ID do artigo: 295114 - Exibir os produtos aos quais esse artigo se aplica.
Erro nº: 235696 (SHILOH_bugs)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Executar um SELECT * FROM SYSINDEXES consultar um banco de dados que tenha sido atualizado do Microsoft SQL Server 7.0 pode causar uma violação de acesso. Se ocorrer uma violação de acesso, um erro mensagem semelhante a seguir exibe na janela de consulta:
ODBC: Mensagem 0, nível 19, estado 1
SqlDumpExceptionHandler: Processo 51 gerou exceção fatal c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server está encerrando esse processo.

Servidor: Mensagem 1203, nível 20, estado 1, linha 1
Processar identificação 51 tentar desbloquear unowned recurso KEY: 7: 2: 1 (790023da5d09).

Causa

O comprimento máximo definido para a coluna de chaves na tabela de sistema sysindexes no SQL Server 2000 é 1088, enquanto no SQL Server 7.0, é apenas 816. Quando um banco de dados é atualizado do SQL Server 7.0, o comprimento máximo definido para a coluna de chaves não é atualizado. Como resultado, quando um índice cuja coluna de chaves excede 816 bytes é criado e o índice subseqüentemente é procurado, como em um SELECT * SYSINDEXES de consulta, é gravado o buffer de busca anteriores 816 bytes que foram alocadas, que faz com que a violação de acesso.

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o SQL Server 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211INF: Como obter o Service Pack mais recente do SQL Server 2000

Situação

A Microsoft confirmou que este é um problema no SQL Server 2000. Esse problema foi corrigido primeiro no SQL Server 2000 Service Pack 1.

Mais Informações

Etapas para reproduzir o problema

  1. Anexar ou restaurar um banco de dados do SQL Server 7.0 em um servidor SQL Server 2000.
  2. Execute as instruções SQL seguintes para criar uma tabela e um índice, cuja coluna de chaves excede bytes 816:
    use <dbname>
    go
    
    if object_id('t1') is not null
     drop table t1
    go
    
    create table t1 (c1 int, c2 int, c3 int, c4 int, 
     c5 int, c6 int, c7 int, c8 int, c9 int, c10 int,
     c11 int, c12 int, c13 int, c14 int, c15 int, c16 int, c17 int,
     d1 int, d2 int, d3 int, d4 int, 
     d5 int, d6 int, d7 int, d8 int, d9 int, d10 int,
     d11 int, d12 int, d13 int, d14 int, d15 int, d16 int, d17 int )
    go
    
    create clustered index i_t1 on t1 (c1, c2, c3, c4, c5, c6,c7, c8, c9, c10,
     c11, c12, c13, c14, c15, c16)
    create nonclustered index i_t2 on t1 (d1, d2, d3, d4, d5, d6,d7, d8, d9, d10,
     d11, d12, d13, d14, d15, d16)
    go
    					


  3. Executar a consulta a seguir para reproduzir a violação de acesso:
    SELECT * FROM SYSINDEXES
    					
Além disso, o despejo da pilha e os erros a seguir são vistos no log de erro do SQL Server:
2001-04-02 17:55:04.09 spid51    Using 'sqlimage.dll' version '4.0.5'
Stack Dump being sent to d:\mssql8\MSSQL\log\SQL00011.dmp
2001-04-02 17:55:04.09 spid51    Error: 0, Severity: 19, State: 0
2001-04-02 17:55:04.09 spid51    SqlDumpExceptionHandler: Process 51 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process..
*******************************************************************************
*
* BEGIN STACK DUMP:
*   04/02/01 17:55:04 spid 51
*
*   Exception Address = 004270D7 (CStmtQuery::ErsqExecuteQuery(class CMsqlExecContext *,class CEsComp const *,class CEsComp const *,unsigned long *,int,int)const  + 0000044A Line 0+00000000)
*   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
*   Access Violation occurred reading address 00000038
* Input Buffer 52 bytes -
*  select * from sysindexes  
*  
*******************************************************************************
Short Stack Dump
004270D7 Module(sqlservr+000270D7) (CStmtQuery::ErsqExecuteQuery(class CMsqlExecContext *,class CEsComp const *,class CEsComp const *,unsigned long *,int,int)const +0000044A)
00441A34 Module(sqlservr+00041A34) (CStmtSelect::XretExecute(class CMsqlExecContext *)const +0000021C)
004160DB Module(sqlservr+000160DB) (CMsqlExecContext::ExecuteStmts(class ExecutionContext *)+0000027E)
00415765 Module(sqlservr+00015765) (CMsqlExecContext::Execute(class CCompPlan *,class CParamExchange *)+000001C7)
00415410 Module(sqlservr+00015410) (CSQLSource::Execute(class CParamExchange *)+00000343)
005A683F Module(sqlservr+001A683F) (CStmtPrepQuery::XretExecute(class CMsqlExecContext *)const +00000211)
004160DB Module(sqlservr+000160DB) (CMsqlExecContext::ExecuteStmts(class ExecutionContext *)+0000027E)
00415765 Module(sqlservr+00015765) (CMsqlExecContext::Execute(class CCompPlan *,class CParamExchange *)+000001C7)
00415410 Module(sqlservr+00015410) (CSQLSource::Execute(class CParamExchange *)+00000343)
00459A54 Module(sqlservr+00059A54) (language_exec(struct srv_proc *)+000003C8)
004175D8 Module(sqlservr+000175D8) (process_commands(struct srv_proc *)+000000E0)
410735D0 Module(UMS+000035D0) (ProcessWorkRequests(class UmsWorkQueue *)+00000264)
4107382C Module(UMS+0000382C) (ThreadStartRoutine(void *)+000000BC)
7800BEA1 Module(MSVCRT+0000BEA1) (_beginthread+000000CE)
77E92CA8 Module(KERNEL32+00012CA8) (CreateFileA+0000011B)
-------------------------------------------------------------------------------
2001-04-02 17:55:04.49 spid51    clean_tables_xact: active sdes for tabid 22001-04-02 17:55:04.49 spid51    Process 51 unlocking unowned resource: KEY: 7:2:1 (790023da5d09)
2001-04-02 17:55:04.49 spid51    Error: 1203, Severity: 20, State: 1
2001-04-02 17:55:04.49 spid51    Process ID 51 attempting to unlock unowned resource KEY: 7:2:1 (790023da5d09)..
2001-04-02 17:55:04.50 spid51    clean_tables_xact: active sdes for tabid 22001-04-02 17:55:04.50 spid51    Process 51 unlocking unowned resource: KEY: 7:2:1 (790023da5d09)
2001-04-02 17:55:04.50 spid51    Error: 1203, Severity: 20, State: 1
2001-04-02 17:55:04.50 spid51    Process ID 51 attempting to unlock unowned resource KEY: 7:2:1 (790023da5d09)..
2001-04-02 17:55:04.50 spid51    Error: 0, Severity: 19, State: 0
2001-04-02 17:55:04.50 spid51    language_exec: Process 51 generated an access violation. SQL Server is terminating this process..
2001-04-02 17:55:04.50 spid51    clean_tables_xact: active sdes for tabid 22001-04-02 17:55:04.50 spid51    Process 51 unlocking unowned resource: KEY: 7:2:1 (790023da5d09)
2001-04-02 17:55:04.50 spid51    Error: 1203, Severity: 20, State: 1
2001-04-02 17:55:04.50 spid51    Process ID 51 attempting to unlock unowned resource KEY: 7:2:1 (790023da5d09)..
				

Propriedades

ID do artigo: 295114 - Última revisão: quarta-feira, 17 de novembro de 2004 - Revisão: 4.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB295114 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 295114

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com