7 Nisan 2009 Salı

HATA MESAJI:
"Executing the query "ALTER INDEX [index_adı] ON [dbo].[tablo_adı] REORGANIZE WITH ( LOB_COMPACTION = ON ) " failed with the following error: "The index "index_adı" (partition 1) on table "tablo_adı" cannot be reorganized because page level locking is disabled.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly."

AÇIKLAMA:
Bir veritabanındaki Index' ler için Index Reorganization işlemi yaptığınızda böyle bir hata mesajıyla karşılaşabilirsiniz.

ÇÖZÜM:
Bu hatayı almanızın nedeni, ilgili Index' in ALLOW_PAGE_LOCKS özelliğinin kapalı olmasıdır.

Veritabanınızda bulunan tüm Index' lerin hangilerinin ALLOW_PAGE_LOCKS özelliğinin kapalı olup olmadığını görmek için şu sorguyu çalıştırabilirsiniz:

SELECT A.Name AS InName,ob.Name AS DBName FROM sys.indexes A LEFT OUTER JOIN sys.objects ob ON ob.object_id = A.object_id WHERE ALLOW_PAGE_LOCKS = 0 AND ob.type = 'U'

Bir Index' in ALLOW_PAGE_LOCKS özelliğini etkinleştirmeyi SSMS arayüzünden de yapabilirsiniz, T-SQL ile de:

- SSMS: İlgili tablodaki Index üzerinde farenin sağ tuşuna tıklayın, açılan menüden "Properties" öğesini seçin ve açılan penceredeki Options bölümünde bulunan "Use page locks when accessing the index" seçeneğini işaretleyip OK düğmesine tıklayarak Index Properties penceresini kapatın.

- T-SQL: İlgili Index' a ait bilgileri kullanarak aşağıdaki komutu çalıştırın:
ALTER INDEX ON SET (ALLOW_PAGE_LOCKS = ON)

Hiç yorum yok: