Исправление: SELECT * FROM SYSINDEXES в базе данных, которые обновлены до SQL Server 2000 может вызвать нарушение прав доступа

Переводы статьи Переводы статьи
Код статьи: 295114 - Vizualiza?i produsele pentru care se aplic? acest articol.
BUG #: 235696 (SHILOH_bugs)
Развернуть все | Свернуть все

В этой статье

Проблема

Выполнение SELECT * FROM SYSINDEXES запроса к базе данных, которая была обновлена с Microsoft SQL Server 7.0 может вызвать нарушение прав доступа. Если происходит нарушение прав доступа, появляется сообщение об ошибке примерно следующий пример отображает в окне запроса:
ODBC: Сообщение 0, уровень 19, состояние 1
SqlDumpExceptionHandler: 51 процесс создания неустранимое исключение c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server завершает этот процесс.

Сервер: Сообщение 1203, уровень 20, состояние 1, строка 1
Попытка разблокировать ресурс unowned KEY 51 идентификатор процесса: 7: 2: 1 (790023da5d09).

Причина

Максимальная длина, определенная для столбца ключей вsysindexesСистемная таблица SQL Server 2000 — 1088, находясь в SQL Server 7.0, это только 816. Максимальная длина, определенная для столбца ключей не обновляется при обновлении базы данных SQL Server 7.0. Таким образом, когда создается индекс, в которой столбец ключа превышает 816 байтов и индекс впоследствии выбирается, как в SELECT * FROM SYSINDEXES запроса, упреждающей выборки буфера записывается за 816 байтов, занятых, что вызывает нарушение прав доступа.

Решение

Чтобы решить эту проблему, получите последний пакет обновления для SQL Server 2000. Дополнительные сведения см. в следующей статье базы знаний Майкрософт::
290211INF: Как получить последний пакет обновления для SQL Server 2000

Статус

Корпорация Майкрософт подтверждает, что это проблема в SQL Server 2000.Впервые эта проблема была исправлена в SQL Server 2000 с пакетом обновления 1 (SP1).

Дополнительная информация

Действия для воспроизведения поведения:

  1. Подключение или восстановление базы данных SQL Server 7.0 на сервер SQL Server 2000.
  2. Выполните следующие инструкции SQL для создания таблицы и индекса, в которой столбец ключа превышает 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. Выполните следующий запрос, чтобы воспроизвести нарушение прав доступа.
    SELECT * FROM SYSINDEXES
    					
Кроме того следующие стека и ошибки отображаются в журнале ошибок 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)..
				

Свойства

Код статьи: 295114 - Последний отзыв: 21 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2000 Standard Edition
Ключевые слова: 
kbbug kbfix kbsqlserv2000sp1fix kbmt KB295114 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:295114

Отправить отзыв

 

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