2010-02-02 21 views
13

SQL Server Management Studio, içinde üç dosya olduğunu söyleyen bir veritabanı yedeğim var: bir .mdf dosya, bir .ndf dosya ve bir .ldf dosya. Bu ikincil veri dosyası (.ndf one) açık bir sebep olmaksızın yaratıldı, bu nedenle veritabanını yedeklemeden geri yüklenirken, (tamamen veri kaybetmeden) tamamen kaldırmak istiyorum.(Birleştirme) SQL Servers 'veritabanı ikincil veri dosyası

Bu mümkün mü?

+0

NDF'nin amacı IO dosyasını dağıtmaktır. Eğer sunucu yaşıyorsanız NDF'ler şema ile uğraşmaz. NDF sizi neden rahatsız ediyor? –

+3

@Hassan NTFS birim parçalanmasının üstesinden gelmek için oluşturuldu ve varlığının başka nedenleri yok. NDF'lerin iyi olduğunu kabul ederken, dikkatsizce NDF'ler yaratıldı. Dosyanızda –

cevap

14

Tamam, bir çözüm buldum.

Veritabanını ilk yedekleyin.

bu yürütün:

USE database_name; 

O zaman bu, yürütün ve NDF dosyasının mantıksal adıyla logical_ndf_file_name değiştirin (kolayca veritabanına-aracılığıyla öğrenebilirsiniz> Properties_Files):

DBCC SHRINKFILE('logical_ndf_file_name', EMPTYFILE); 
ALTER DATABASE database_name REMOVE FILE logical_ndf_file_name; 
+0

veri var mıydı? ve eğer öyleyse, ne kadar sürdü ve DB yaşadı? –

+0

@Hassan NDF yaklaşık 8 Gb iken, MDF 60 Gb civarındaydı. Sonuçta yaklaşık 20 dakika sürdü. "Canlı" ile ne demek istediğinden emin değilim. Çevrimdışına almadım, ancak buna karşı sorgulama yapılmadı. –

+0

ilginç bilgiler. Live By Ben üretim kullanımı veya müşteriye dönük demek istedim. –

0

Produciton yükü sırasında boş olan ndf damlasını çalıştırdım. Veritabanının sildiğiniz dosyaya yazmayı denemesini sağlamak için boş olanla aynı işlemdeki drop ndf komutunu çalıştırmanın önemli olduğunu düşünüyorum, ancak sonra boş bir veritabanından sonra dosyaları başka bir denemeye teşebbüs ederek kullanılamaz hale getirir. sonra boş.