Düzeltme: SELECT * FROM SYSINDEXES SQL Server 2000'e yükselttiğinizde bir veritabanı erişim ihlaline neden

Makale çevirileri Makale çevirileri
Makale numarası: 295114 - Bu makalenin geçerli olduğu ürünleri görün.
# Hata: 235696 (SHILOH_bugs)
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Bir SELECT çalıştırma * FROM SYSINDEXES Microsoft SQL Server 7. 0'dan yükseltilen bir veritabanı sorgusu, bir erişim ihlaline neden olabilir. Erişim ihlali ortaya çıkarsa, hata <a0>sorgu</a0> penceresinde aşağıdaki ekranları benzer iletisi:
ODBC: <a1>hata</a1> 0'ı, <a1>Düzey</a1> 19, durum 1
SqlDumpExceptionHandler: 51 işlem önemli özel durum oluşturulan c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server, bu işlem sonlandırılıyor.

Sunucu: Hata 1203, 20, durum 1, Düzey 1 satır
KIMLIĞI 51 sahipsiz kaynak KEY kilidini açmayı deneyen işlem: 7: 2: <a1>1</a1> (790023da5d09).

Neden

SQL Server 2000'de <a1>sysindexes</a1> sistem tablosundaki <a2>anahtarları</a2> sütunu, 1088 için tanımlanan maksimum uzunluğu SQL Server 7.0 karşın, yalnızca 816 olduğu. Bir veritabanı SQL Server 7. 0'dan yükseltildiğinde anahtar sütun için tanımlanmış en fazla uzunluk güncelleştirilmedi. Sonuç olarak, dizin, anahtar sütun 816 baytı aşıyor oluşturulur ve dizini daha sonra bir SELECT gibi getirilen * FROM SYSINDEXES sorgu, hazırlık arabellek 816 ayrılmış olan baytların, erişim ihlali neden yazılır.

Çözüm

Bu sorunu gidermek için <a0></a0>, SQL Server 2000 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
290211BILGI: en son SQL Server 2000 hizmet paketi nasıl elde edilir

Durum

Microsoft SQL Server 2000'de bir sorun olduğunu onaylamıştır. Bu sorun ilk olarak SQL Server 2000 Service Pack 1'de giderilmiştir.

Daha fazla bilgi

Davranışı yeniden oluşturma adımları

  1. Veya bir SQL Server 7.0 veritabanına bir SQL Server 2000 sunucuya geri ekleyebilirsiniz.
  2. Bir dizini, anahtarları sütun 816 baytı aşıyor ve bir tablo oluşturmak için aşağıdaki SQL deyimlerini çalıştırın:
    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. Aşağıdaki sorgu erişim ihlali oluşturmaya:
    SELECT * FROM SYSINDEXES
    					
Ayrıca, aşağıdaki yığın dökümü ve hataları SQL Server hata günlüğüne görülür:
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)..
				

Özellikler

Makale numarası: 295114 - Last Review: 17 Kasım 2004 Çarşamba - Gözden geçirme: 4.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB295114 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:295114

Geri Bildirim Ver

 

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