DBCC SHRINKFILE ve SHRINKDATABASE komutları, seyrek doldurulmuş text, ntext veya image sütunları nedeniyle çalışmayabilir (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)

Makale çevirileri Makale çevirileri
Makale numarası: 324432 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Belirtiler

DBCC SHRINKFILE ve DBCC SHRINKDATABASE komutları olmayan verileri taşımak ve EstimatedPages değeri komutu tamamlandığında bildirilir MinimumSize değere eşitse, dosya boyutunu azaltın. Büyük ikili nesne (BLOB) veri türleri olan tablolara veri değişikliği sorgularını nedeniyle (seyrek (örneğin, yalnızca 1 / 8 sayfaları, uzantı denetimleri ayrılmış) (Bu bağlantı, bir kısmı veya tamamı ingilizce olan içeriğe işaret verilerle doldurulur, ayrılan çok Tekdüzen kapsamlarını sağlamak için DBCC SHRINKFILE neden olacak EstimatedPages sayısını over-estimate DBCC SHRINKDATABASE komutları ve komutları küçültme operasyonları gerçekleştirmek olanaklıdır metin, ntext, görüntü),. Veritabanı dosyaları bir DBCC SHRINKFILE çalıştırdıktan sonra genellikle burada, bu davranış karşılaştı durumlarda, tam veritabanı yedeği boyutu en fazla 8 saat veritabanı dosyalarının boyutunu küçüktür.

Çözüm

Bu durumu düzeltmek için çalışırken sürekli olarak çevrimiçi olarak etkilenen tabloların yoksa, bu sorunu gidermek için aşağıdaki geçici çözümlerden birini kullanabilirsiniz:
  • Tüm tabloda aynı veritabanında yeni bir tablo transfer etmek için SELECT INTO deyimini kullanın. Özgün Tablo bırakma ve bir DBCC SHRINKFILE deyimini çalıştırın. Yeni bir tablo için özgün tablo adını yeniden adlandırın.
  • Bütün tablo farklı bir veritabanında yeni bir tablo transfer etmek için SELECT INTO deyimini kullanın. Özgün tabloyu kesmek ve bir DBCC SHRINKFILE deyimini çalıştırın. Veriler, özgün tabloya geri aktarın.
  • Yerel modda tabloyu kopyalamak için toplu kopyalama programı kullanın. Tablosu için komut dosyası ve sonra da var olan tabloya bırakın. DBCC SHRINKFILE bir deyimi çalıştırın. Yeni bir tablo oluşturun ve sonra tabloya veri kopyalamak için Kopyala toplu programı kullanın.
  • Veri Dönüştürme Hizmetleri (DTS), tüm veritabanını yeni bir veritabanına aktarmak için kullanın. SQL Server 7.0 Data Transformation Services 64 KB'DEN doğru metin ve resim verileri uzun transfer. Bu sorun, Data Transformation Services SQL Server 2000 sürümü için geçerli değildir. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    257425Düzeltme: DTS nesne aktarım 64 büyük bir BLOB veri aktarım.
    Aşağıdaki sorguyla 64 KB'den büyük olan metin ve resim sütunları arayabilirsiniz:
    SELECT MAX (DATALENGTH (TextImageColumn)) FROM TableName
    metin ve resim 64 KB'DEN büyük veridir, transfer verileri keser ve DTS günlük dosyalarının dışında herhangi bir hata yükseltin. Bilgileri, 64 KB'DEN büyük metin veya resim veri varsa, üçüncü madde işareti öğesinde metni veya resmi verilere sahip tablolar için kullanın. Sonra geri kalan maddelerin veritabanındaki DTS kullanın.
Veritabanının boyutunu harici bir dosyada veya başka bir veritabanına veri taşımak için çok büyük ya da veritabanı için çevrimiçi olmalıdır, DBCC SHRINKFILE komut EMPTYFILE seçeneğiyle birlikte kullanabilirsiniz. Bu geçici çözüm kullanmak için aşağıdaki adımları izleyin:
  1. Microsoft SQL Server 7.0 Service Pack 3'ü çalıştırıyorsanız, izleme bayrağı 1180 ve 1197 açın.
  2. 7.00.987 Ya da daha sonra da dahil olmak üzere, Service Pack 4, Microsoft SQL Server 7.0 Service Pack 3 çalıştıran oluşturmak, izleme kapatma 1180 bayrak.
  3. Sürücü alanı sorunları veya Performansı düşürmemek için birkaç dosya arasında veritabanı forma, 1 veya daha fazla ek dosya toplam boyutu için aşağıdaki sorgu sonuçlarını benzer olan <a2>ALTER DATABASE</a2> komutunu kullanarak veritabanında oluşturma.
    select 'size in MB'=ceiling(sum(ei.pg_alloc)/128.000), sfg.groupname
    from extentinfo ei inner join sysfiles sf on ei.[file_id] = sf.fileid and ei.[file_id] != 1
     inner join sysfilegroups sfg on sf.groupid = sfg.groupid
    group by sfg.groupname
    Not: Yukarıdaki sorgu, bu makalenin "Daha fazla bilgi" bölümünde sorguda tarafından oluşturulan tabloyu kullanır. Ayrıca, dosya boyutunun toplam dosya grubu tarafından ayrılmış.

  4. DBCC SHRINKFILE sorguda, seyrek blob Tekdüzen kapsamlarını doldurulan her dosya, ikinci parametre olarak EMPTYFILE seçeneğiyle çalıştırın.
  5. Bir veya daha çok tablo ile aynı şema bu makalenin "Daha fazla bilgi" bölümündeki extentinfo tablo oluşturarak DBCC SRHINKFILE komut ilerlemesini izleyebilirsiniz. "ıNSERT...'ı çalıştırma EXEC import_extentinfo "yeni tablolara veri doldurmak için sorgu. Sonuçları analiz etmek için aşağıdaki sorguyu kullanır:
    select [file_id], 'page count'=sum(pg_alloc), 'min page'=min(page_id), 'max page'=max(page_id) from extentinfo group by [file_id]
    ayrıca tablolar harfleri aynı desenle başlatmak ve yakın zaman DBCC EXTENTINFO komut olarak oluşturulan DBCC EXTENTINFO komut çalıştırıldığında izlemek için aşağıdaki sorguyu kullanabilirsiniz:
    select crdate, [name] from sysobjects where type = 'U' and [name] like 'extent%' order by crdate
  6. DBCC SHRINKFILE sorgu tamamladığında, bir ALTER çalıştırmak DATABASE sorgu, veritabanından eski dosyaları kaldırılacak.
  7. DBCC SHRINKFILE sorguda 3. adımda oluşturulan yeni dosyalarda TRUNCATEONLY</a1> seçeneğiyle çalıştırarak, ek alan büyük olasılıkla kaldırabilirsiniz.
  8. Microsoft SQL Server 7.0 kullanıyorsanız, 1 veya 2. adımda açtığınız izleme bayrağı kapatın.

Daha fazla bilgi

Sistem Yöneticisi haklarına sahip bir kullanıcı olarak oturum açtığınızdan, aşağıdaki Transact-SQL sorgusu Query Analyzer'ı gibi herhangi bir sorgu aracını çalıştırabilirsiniz. Transact-SQL sorgusu, DBCC SHRINKDATABASE komutu ve komut dosyaları nedeniyle seyrek daraltılamıyor DBCC SHRINKFILE BLOB Tekdüzen kapsamlarını doldurulan, belirlemek için SQL Server üzerinde çalışır.

Not:, gerekir '< veritabanı adı >' dizesi sorun veritabanının adı için güncelleştirme ve adı tek tırnak işaretleri içine alın.

use pubs
go
if convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 8
begin 
   create table extentinfo 
   (
   [file_id] smallint,
   page_id int,
   pg_alloc int,
   ext_size tinyint,
   obj_id int,
   index_id tinyint,
   pfs_bytes varbinary(10)
   )
end
go
if convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 7
begin
   create table extentinfo 
   (
   [file_id] smallint,
   page_id int,
   pg_alloc int,
   ext_size tinyint,
   obj_id int,
   index_id tinyint,
   pfs_bytes varbinary(10),
   avg_used tinyint
   )
end
go
create procedure import_extentinfo as
dbcc extentinfo('<database name>')
go
insert extentinfo exec import_extentinfo
go

select [file_id],obj_id, index_id, ext_size, 'actual extent count'=count(*), 'actual page count'=sum(pg_alloc),
 'possible extent count'=ceiling(sum(pg_alloc)*1.0/ext_size),
 'possible extents / actual extents' = (ceiling(sum(pg_alloc)*1.00/ext_size)*100.00) / count(*)
 from extentinfo where ext_size != 1 and index_id = 255
 group by [file_id],obj_id, index_id, ext_size
 having count(*)-ceiling(sum(pg_alloc)*1.0/ext_size) > 0
 order by obj_id, index_id, [file_id]
255 Index_id değerleri son sorgusundan sonuç satırlarını görürseniz ve olası bir ölçüde / fiili uzantının sütun 75'den küçükse, bu veritabanı BLOB kapsamlarını seyrek doldurulan yüklü ve boyutu bu makalenin "Çözüm" bölümünde açıklanan yöntemler tarafından azaltılabilir.

Not: Bu sorgu, DBCC EXTENTINFO işlevselliğini kullanır komutu. Işlevlerini değiştirebilir veya gelecekteki sürümlerinde bir Microsoft SQL Server bile kaldırılması nedeniyle bu durum dışında DBCC EXTENTINFO komutunu kullanın.

Referanslar

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
272220Düzeltme: Doğru iadesi Not METIN/RESIM veri depolama alanı
308627Düzeltme: Metin veya resim verileri ile veritabanı DBCC SHRINKDATABASE veya DBCC SHRINKFILE Genişlet

Özellikler

Makale numarası: 324432 - Last Review: 9 Aralık 2005 Cuma - Gözden geçirme: 5.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbmt kbprb KB324432 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:324432

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com