İçin oluşturulmuş çok fazla ikincil veri dosyam (.ndf) var tempdb
. Fazla dosyaları kaldırmak için dosyayı boşaltmam gerekiyor (içerik diğer dosyalara taşınacak):
DBCC SHRINKFILE('tempdbfile8', EMPTYFILE);
ve sonra dosyayı silin:
ALTER DATABASE tempdb REMOVE FILE tempdbfile8;
Ancak EMPTYFILE
komut hatayı döndürür:
DBCC SHRINKFILE: Page 8:41920 could not be moved because it is a work table page.
Msg 2555, Level 16, State 1, Line 2
Cannot move all contents of file "tempdbfile8" to other places to complete the emptyfile operation.
Endişelenmeyin, sadece bu sayfayı kullanan bir nesneyi bulmam gerekiyor:
DBCC TRACEON (3604)
DBCC PAGE(2,8,41920) --dbid=2, fileid=8, pageid=41920
Komut, aralarında object_id olan birçok bilgi döndürür. Fakat:
Metadata: ObjectId = 0
Bu konuda ne yapacağım hakkında hiçbir fikrim yok. Hangi kedi bu sayfanın taşınmasını engelliyor? Bu nesne, süreç, oturum ya da her neyse nasıl bulunur? Herhangi bir yardım takdir edilecektir, ancak her şeyi olduğu gibi bırakmanın veya başka bir dosyayı kaldırmanın bu soruna geçerli bir çözüm olmadığını lütfen unutmayın.).
DÜZENLE:
Dosyaları kaldırıyorum, çünkü işlemci çekirdeği başına (aynı başlangıç boyutu, aynı büyüme hızı) bir dosya oluşturmanın "en iyi uygulamasını" takip ediyorduk. Ancak bildiğim kadarıyla, çekişme sorunlarıyla karşılaşana kadar, aynı cihazda ek tempdb dosyaları oluşturmanın bir anlamı yok. Bizim durumumuzda mantıklı, çünkü MPIO açık ve depolama cihazı 4 yolu işleyebilir. Ancak bir hata oluştu ve 6 çekirdekli işlemci ile toplam 5 dosya ile sonuçlandık. MPIO yollarından daha fazla, CPU çekirdeklerinden daha az ve çift bir sayı değil. Herhangi bir soruna neden olmayabilir, ancak doğru görünmüyor :).
Sonunda tek bir kullanıcı moduna (geri alma anında) veri veritabanlarından birini (soruna neden olduğundan şüphelendiğim) ayarlayarak sunucuyu yeniden başlatmadan dosyayı boşaltmayı ve kaldırmayı başardım. İşe yaradı, ama şanslıydım. Gerçekten istediğim, sayfayı her zaman takip edebilmektir :).
dbcc page ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])
Çözümünüz hakkında: işe yarayacaktı, ancak bunu örneği indirmeden gerçekten yapmak istiyorum.