Salt okunur dosya grubunda Columnstore Dizini CheckDB'yi engelliyor


15

Bu bir dosya grubu ayarı gelir read_onlyönler dbcc checkdbdosya grubu bir columnstore indeksi içeriyorsa tüm veritabanı için. Çalıştırmaya çalışırken checkdbveya checkfilegroup( okuma-yazma ikincil değerleri dahil veritabanındaki herhangi bir dosya grubu için[PRIMARY] ) aşağıdaki hata döndürülür ...

Msg 8921, Level 16, State 1, Line 24
Check terminated. A failure was detected while collecting facts. 
Possibly tempdb out of space or a system table is inconsistent. Check previous errors.

Salt okunur bir dosya grubunda sütun deposu verilerine sahip olmak için desteklenen bir yöntem var mı? Yoksa bu senaryoda bütünlük denetimlerine izin verilmiyor mu?

reprodüksiyon

create database check_fg_ro
go
use check_fg_ro
go
exec sp_changedbowner 'sa';
go
alter database check_fg_ro add filegroup check_fg_ro_2;
alter database check_fg_ro
    add file (
         name='check_fg_ro_2'
        ,filename='C:\check_fg_ro_2.ndf'
    ) to filegroup check_fg_ro_2;
go
create table foo ( 
    i int not null primary key
) on check_fg_ro_2;
go
create columnstore index ccix_foo on foo(i);
go
use master
go
alter database check_fg_ro modify filegroup check_fg_ro_2 read_only;
go
dbcc checkdb( check_fg_ro ) with no_infomsgs, all_errormsgs, extended_logical_checks;
/*
Msg 8921, Level 16, State 1, Line 24
Check terminated. A failure was detected while collecting facts. 
Possibly tempdb out of space or a system table is inconsistent. Check previous errors.
*/
go

Feragatname: Technet forumlarına çapraz olarak gönderildi

Yanıtlar:


12

DBCC, salt okunur bir sütun deposu tablosu için silinen bir bitmap'i doğrulamaya çalıştığında sorun oluşur.

Silinen bitmapler, sütun deposu tablosuyla aynı dosya grubunda depolanır. Sıkıştırılmış satır gruplarından mantıksal olarak silinen satırları izlerler.

Anlayabildiğim kadarıyla, her şey iç sistem tablolarında (SQL Server 2017 CU3'te) doğru bir şekilde düzenlenmiştir ve DBCC kodunun çoğu, sütun deposunu silinen bitmap'leri tutan gizli satır kümelerini doğru bir şekilde açıklar.

Bazı nedenlerden dolayı, çevrimdışı veya salt okunur dosya gruplarının denetlenmesi işlenmeyen bir özel duruma neden olur:

Çağrı yığını

Msg 8921, Level 16, State 1, Line 69
Check terminated. A failure was detected while collecting facts.
Possibly tempdb out of space or a system table is inconsistent.
Check previous errors.

Aynı çevrimdışı / salt okunur denetim, DBCC işleminde (gerçekler toplanırken) birkaç kez daha sorunsuz gerçekleştirilir.

Sorun, DBCC CHECKDBDBCC FILEGROUP ( veya herhangi bir dosya grubunda) çalıştırıldığında veya DBCC CHECKTABLEbelirli bir salt okunur sütun deposu tablosunu denetlemesi istendiğinde oluşur. Bunların hiçbiri, geri kalan DBCC denetimlerinin çalışmasını engelleyen önemli bir hata durumu üretmemelidir, bu nedenle bu bir hata olmalıdır.


Yoksa bu senaryoda bütünlük denetimlerine izin verilmiyor mu?

Geçici bir çözüm olarak çalıştırın DBCC CHECKFILEGROUP salt okunur yapılmadan (veya DBCC CHECKDBo zamanda çalıştırılmadan ) hemen önce columntore dosya grubunda çalıştırın :

  1. DBCC CHECKALLOC veritabanında
  2. Çalıştırmak DBCC CHECKCATALOG
  3. Çalıştırmak DBCC CHECKTABLEHer tablo için (salt okunur bir dosya grubundaki sütun mağaza tabloları hariç)
  4. Ayrıca koşmak da isteyebilirsiniz DBCC CHECKCONSTRAINTS .

Bkz Tutarlılık bir VLDB için Seçenek denetleme Paul Randal ve Q & A tarafından birden faza gün Bölme DBCC CHECKDB .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.