REVISIÓN: SELECT * FROM SYSINDEXES en una base de datos que se actualiza a SQL Server 2000 puede causar una infracción de acceso

Seleccione idioma Seleccione idioma
Id. de artículo: 295114 - Ver los productos a los que se aplica este artículo
Error nº: 235696 (SHILOH_bugs)
Expandir todo | Contraer todo

En esta página

Síntomas

Ejecutar una instrucción SELECT * FROM SYSINDEXES consulta una base de datos que se ha actualizado desde Microsoft SQL Server 7.0 puede causar una infracción de acceso. Si se produce una infracción de acceso, un mensaje de error similar al siguiente se muestra en la ventana de consulta:
ODBC: Msg 0, nivel 19, estado 1
SqlDumpExceptionHandler: Proceso 51 generó la excepción fatal c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server está finalizando este proceso.

Servidor: Msg 1203, nivel 20, estado 1, línea 1
Procesar ID 51 intentaba desbloquear unowned recurso KEY: 7: 2: 1 (790023da5d09).

Causa

La longitud máxima definida para la columna de claves de la tabla de sistema sysindexes en SQL Server 2000 es 1088, mientras que en SQL Server 7.0, es sólo 816. Cuando se actualiza una base de datos de SQL Server 7.0, no se actualiza la longitud máxima definida para la columna de claves. En consecuencia, cuando se crea un índice cuya columna de claves supera 816 bytes y posteriormente se recupera el índice, como en una instrucción SELECT * FROM SYSINDEXES consulta, se escribe el búfer de captura previa más allá de los bytes 816 que se han asignado, lo que hace que la infracción de acceso.

Solución

Para resolver este problema, consiga el Service Pack más reciente para SQL Server 2000. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
290211INF: Cómo obtener el Service Pack más reciente de SQL Server 2000

Estado

Microsoft ha confirmado que este es un problema de SQL Server 2000. Este problema se corrigió por primera vez en SQL Server 2000 Service Pack 1.

Más información

Pasos para reproducir este comportamiento

  1. Adjuntar o restaurar una base de datos de SQL Server 7.0 a un servidor de SQL Server 2000.
  2. Ejecutar las siguientes instrucciones SQL para crear una tabla y un índice, cuya columna de claves supera 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. Ejecute la siguiente consulta para reproducir la infracción de acceso:
    SELECT * FROM SYSINDEXES
    					
Además, el siguiente volcado de pila y los errores se muestran en el registro de error de SQL Server de:
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)..
				

Propiedades

Id. de artículo: 295114 - Última revisión: miércoles, 17 de noviembre de 2004 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
Palabras clave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB295114 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 295114

Enviar comentarios

 

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