dbcc DBREINDEX (Transact-sql)

Belirtilen veritabanındaki bir tablo için bir veya daha fazla dizinleri yeniden oluşturur.

Önemli notÖnemli

Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmayın ve bu özelliği kullanmakta olan uygulamaları mümkün olduğunca erken bir zamanda değiştirin.Kullanım alter INDEX onun yerine.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

DBCC DBREINDEX 
( 
    table_name 
    [ , index_name [ , fillfactor ] ]
)
    [ WITH NO_INFOMSGS ] 

Bağımsız değişkenler

  • table_name
    Belirtilen dizin veya dizinleri yeniden oluşturmak için tablonun adını içeren. Tablo adları için kuralları izleyin gerekir tanımlayıcıları.

  • index_name
    Yeniden dizin adıdır. Dizin adları tanımlayıcıları kuralları uymanız gerekir. Eğer index_namebelirtilen table_namebelirtilmesi gerekir. Eğer index_namebelirtilen ya da " ", tabloda tüm dizinler yeniden oluşturulur.

  • fillfactor
    Dizin oluşturulduğunda veya yeniden veri saklamak için her dizin sayfasının boş alan yüzdesidir. fillfactorDizin oluşturulduğunda olma ve kümelenmiş bir dizin yeniden çünkü yeniden diğer kümelendirilmemiş dizinler dizin için yeni varsayılan dolgu etmeni yerini alır. Ne zaman fillfactor0, dbcc DBREINDEX son belirtilen dizin için dolgu etmeni değerini kullanır. Bu değer saklanan sys.indexes Katalog görünümü.

    Eğer fillfactorbelirtilen table_nameve index_namebelirtilmesi gerekir. Eğer fillfactorbelirtilmemişse, varsayılan dolgu etmeni 100 kullanılır. Daha fazla bilgi için, bkz. Bir dizin için dolgu etmeni belirleme.

  • WITH NO_INFOMSGS
    0 İle 10 arasında önem derecelerine sahip bilgi tüm iletileri bastırır.

Açıklamalar

dbcc DBREINDEX tablo için dizin veya bir tablo için tanımlanmış tüm dizinleri yeniden oluşturur. Dinamik olarak yeniden oluşturulması için dizin sağlayarak, PRIMARY key veya UNIQUE kısıtlamaları zorlamayı dizinler bırakın ve bu kısıtlamaları yeniden oluşturmak zorunda kalmadan oluşturulması. Bu dizin tablo veya kendi kısıtlamaları yapısını bilmeden yeniden oluşturulması olduğunu anlamına gelir. Bu tabloya bir kopyasını toplu veri sonra ortaya çıkabilir.

dbcc DBREINDEX bir deyimi içinde bir tabloda tüm dizinler yeniden oluşturabilirsiniz. Bu, birden fazla drop INDEX ve create INDEX deyimleri kodlama daha kolaydır. Bir deyimi tarafından gerçekleştirilen çalışma, bireysel drop INDEX ve create INDEX deyimleri bir hareket atomik olmak dahil edilmesi ise dbcc DBREINDEX otomatik olarak atom, çünkü. Ayrıca, dbcc DBREINDEX daha optimizasyonlar bireysel drop INDEX ve create INDEX deyimleri daha sunuyor.

dbcc INDEXDEFRAG veya alter dizin yeniden Düzenle seçeneği ile farklı olarak, dbcc DBREINDEX çevrimdışı bir işlemdir. Kümelendirilmemiş dizin oluşturulmuşsa, söz konusu işlem süresi için masaya paylaşılan bir kilit tutulur. Bu tabloda değişiklikler önler. Kümelenmiş dizin oluşturulmuşsa, bir özel tablo kilidi düzenlenmektedir. Bu nedenle etkili tablo çevrimdışı herhangi bir tablo erişim engeller. Bir dizini yeniden çevrimiçi yapmak için ya da dizin yeniden oluşturma işlemi sırasında paralellik derecesini kontrol etmek, DIZINI YENIDEN alter deyimi ile çevrimiçi seçeneğini kullanın.

Yeniden oluşturmak veya bir dizin yeniden düzenlemek için bir yöntemi seçme hakkında daha fazla bilgi için bkz: Yeniden düzenleme ve dizinler yeniden oluşturma.

Kısıtlamalar

dbcc DBREINDEX aşağıdaki nesneler üzerinde kullanım için desteklenmiyor:

  • Sistem tabloları

  • Uzamsal dizinler

  • Columnstore dizinler

Sonuç Kümeleri

NO_INFOMSGS belirtmediyseniz (tablo adı belirtilmelidir), dbcc DBREINDEX her zaman döndürür:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

İzinler

Arayan tablonun sahibi gerekir veya üyesi olmanız sysadmin sabit sunucu rolü, db_owner sabit veritabanı rolü, ya da db_ddladmin veritabanı rolü.

Örnekler

A.Dizini yeniden oluşturma

Aşağıdaki örnek oluşturur Employee_EmployeeIDile dolgu etmeni kümelenmiş bir dizin 80üzerine Employeeiçinde masa AdventureWorksveritabanı.

USE AdventureWorks2012; 
GO
DBCC DBREINDEX ("HumanResources.Employee", PK_Employee_BusinessEntityID,80);
GO

B.Tüm dizinler yeniden oluşturuluyor

Aşağıdaki örnek üzerinde tüm dizinler oluşturur Employeetablo AdventureWorksDolgu faktörü değeri kullanarak 70.

USE AdventureWorks2012; 
GO
DBCC DBREINDEX ("HumanResources.Employee", " ", 70);
GO

Ayrıca bkz.

Başvuru

ALTER TABLE (Transact-SQL)

Tablo (Transact-sql) oluştur

DBCC (Transact-sql)

sys.indexes (Transact-sql)

sys.dm_db_index_physical_stats (Transact-sql)

ALTER INDEX (Transact-SQL)