Makale numarası: 307487 - Son Gözden Geçirme: 20 Ekim 2009 Salı - Gözden geçirme: 6.0

Nasıl yapılır: SQL Server <a1>tempdb</a1> veritabanına Daralt

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, son yapılandırılmış boyutundan daha küçük bir boyuta tempdb veritabanı daraltmak için kullanabileceğiniz üç yöntem anlatılır. Ilk yöntem, tempdb dosyalarının boyutunu tam denetimini verir, ancak SQL Server'ı yeniden başlatmanızı gerektirir. Ikinci yöntemi, SQL Server'ı yeniden başlatmayı içerebilir bazı sınırlamalarla birlikte, bir bütün olarak tempdb küçülür. Üçüncü yöntem, tek tek tempdb dosyalarını sıkıştırmak sağlar. Son iki yöntem, aktivite tempdb veritabanında küçültme işlemi sırasında ortaya gerektirir.

Not SQL Server 2005 kullanıyorsanız, bu yöntemleri de geçerlidir. Ancak, SQL Server Management Studio Enterprise Manager ve Query Analyzer yerine bu işlemleri gerçekleştirmek için kullanmalısınız. Not daha fazla SQL Server yönetim Stüdyo ' 2005'te bir küçültme işlemi sonra tempdb dosyalarını doğru boyutunu göstermez. DMV sys.master_files 'Şu anda ayrılmış alan' değeri her zaman olarak çekilen ve tempdb veritabanı için bir küçültme işlemi gerçekleştikten sonra bu değer güncelleştirilmez. Bir küçültme işlemi sonra dosyaları doğru tempdb boyutunu bulmak için yönetim Stüdyo aşağıdaki deyimi yürütme:
use tempdb
select (size*8) as FileSizeKB from sys.database_files

Not Bu sorunu (yanlış boyutunu gösteren GUI.) SQL Server 2008 etkilenmemektedir

Tempdb bilgileri

Tempdb geçici bir çalışma alanı ' dir. Diğer kullanımlar arasında SQL Server için tempdb kullanır:
  • Depolama açıkça oluşturulan geçici tablo.
  • Işlem ve sıralama sorgu sırasında oluşturulan ara sonuçları basılı worktables.
  • Statik imleçler materialized.
SQL Server, tempdb hareket günlüğüne bir hareket geri almak için ancak veritabanı kurtarma sırasında hareketlerin yinelemek için yeterli bilgi kaydeder. Bu özellik, tempdb INSERT deyimleri performansı artırır. Buna ek olarak, tüm hareketler, her bir SQL Server'ı yeniden tempdb yeniden olduğundan yinelemek için gereken bilgileri günlüğe gerek yoktur; bu nedenle, ileri dönmek veya geri dönmek için tüm hareketleri yok. SQL Server başladığında, the tempdb modeli veritabanının bir kopyasını kullanarak yeniden oluşturulur ve son yapılandırılmış boyutuna sıfırlayın.

Varsayılan değer olarak, tempdb veritabanı otomatik büyüme için gerektiği şekilde yapılandırıldı; bu nedenle, bu veritabanı sürede bir boyuta istenen daha büyük ulaşması. SQL Server'ın basit BIR yeniden başlatma, tempdb boyutunu son yapılandırılmış boyutuna sıfırlar. Yapılandırılmış boyut, ALTER DATABASE gibi bir işlem MODIFY FILE seçeneği veya DBCC SHRINKFILE deyimi ile değiştirerek, bir dosya boyutu ayarlamak son açık boyutudur. Bu makalede, kendi yapılandırılmış boyutundan daha küçük bir boyuta tempdb daraltmak için kullanabileceğiniz üç yöntem sunar.


Tempdb Shrink için yöntem 1

Bu yöntem, SQL Server'ı yeniden başlatmanız gerekir.

  1. SQL Server'ı durdurun. Komut istemini açın ve sonra da SQL Server aşağıdaki komutu yazarak başlatın:

    -c-f Sqlservr

    - C ve -f parametrelerin bir veri dosyası için 1 MB ve 0.5 MB günlük dosyası için tempdb boyutunu en az yapılandırma modunda başlatmak, SQL Server neden.

    Not: bir SQL Server adlı örneği kullanırsanız, uygun klasörüne (Program Files\Microsoft SQL Server\MSSQL $ örneği name\Binn) geçin ve kullanmalısınız -s geçiş (-s % instance_name).
  2. SQL Server Query Analyzer ile bağlanın ve aşağıdaki Transact-SQL komutları çalıştırın:
       ALTER DATABASE tempdb MODIFY FILE
       (NAME = 'tempdev', SIZE = target_size_in_MB) 
       --Desired target size for the data file
    
       ALTER DATABASE tempdb MODIFY FILE
       (NAME = 'templog', SIZE = target_size_in_MB)
       --Desired target size for the log file
    					
  3. Komut istemi penceresinin en Ctrl-C tuşlarına basarak, SQL Server'ı durdurun, hizmet olarak SQL Server'ı yeniden başlatın ve sonra da Tempdb.mdf ve templog.ldf dosyalarının boyutunu doğrulayın.
Bir bu yöntemi, yalnızca varsayılan mantıksal tempdb dosyalarını, tempdev ve templog çalışır olduğunu kısıtlamasıdır. Ek dosyalar için tempdb eklendiyse, SQL Server gibi bir hizmeti yeniden başlatıldıktan sonra bunları daraltabilirsiniz. Yeniden başlatma sırasında tüm tempdb dosyalarını oluşturulur; bu nedenle bunlar boştur ve kaldırılabilir. Tempdb içinde ek dosyaları kaldırmak için <a0></a0>, FILE REMOVE seçeneğiyle ALTER DATABASE komutunu kullanın.

Tempdb Shrink yöntem 2

Tempdb veritabanı bir bütün olarak daraltmanız DBCC SHRINKDATABASE komutunu seçin. DBCC SHRINKDATABASE, parametre target_percent, veritabanı shrunk sonra istediğiniz veritabanı dosyasını sol boş alan yüzdesidir alır. DBCC SHRINKDATABASE kullanıyorsanız, SQL Server'ı yeniden başlatmanız gerekebilir.

ÖNEMLI: DBCC SHRINKDATABASE çalıştırıyorsanız, başka hiç bir etkinlik tempdb veritabanında gerçekleşmesini. DBCC SHRINKDATABASE çalışırken diğer işlemler tempdb kullanamazsınız emin olmak için SQL Server tek kullanıcı modunda başlatmanız gerekir. Daha fazla bilgi için bu makalenin Effects of Execution of DBCC SHRINKDATABASE or DBCCSHRINKFILE While Tempdb Is In Use bölümüne bakın.
  1. Şu anda sp_spaceused saklı yordamını kullanarak tempdb içinde kullanılan alanı belirleyin. Sonra parametre olarak kullanmak için boş alan sola DBCC SHRINKDATABASE yüzdesini hesaplamak; Bu hesaplama istediğiniz veritabanı boyutuna bağlıdır.

    Not Bazı durumlarda, execute gerekebilir sp_spaceused @ updateusage = true kullanılan alanı yeniden hesaplamasını ve güncelleştirilmiş bir rapor elde etmek için. Sp_spaceused saklı yordamı hakkında daha fazla bilgi için SQL Server Books Online'da bakın.

    Bu örnek göz önünde bulundurun:
    Bu tempdb, iki dosya boyutu ve 30 MB günlük dosyası (Tempdb.ldf), 100 MB olan birincil veri dosyasının (Tempdb.mdf) olduğunu varsayalım. Bu sp_spaceused birincil veri dosyasının 60 MB veri içerdiğini bildirdi varsayalım. Ayrıca birincil veri dosyası için 80 MB daraltmak istediğiniz varsayılır. Küçültme sonra 80 MB - 60 MB = 20 MB boş alan istenilen yüzdesini hesapla Şimdi, 20 MB olarak 80 MB = 25 bölmek % ve diğer bir deyişle, target_percent. Işlem günlüğü dosyasını gerektiği gibi shrunk, % 25 veya 20 bırakarak MB disk alanı boşaltın veritabanı shrunk sonra.
  2. SQL Server Query Analyzer ile bağlanın ve aşağıdaki Transact-SQL komutları çalıştırın:
       dbcc shrinkdatabase (tempdb, 'target percent') 
       -- This command shrinks the tempdb database as a whole
    					
Tempdb veritabanında DBCC SHRINKDATABASE komutunun kullanımı için sınırlamalar vardır. Veri ve günlük dosyaları için hedef boyut, boyut veritabanını oluşturduğunuzda veya kesin olarak ayarlanmış bir ALTER DATABASE gibi dosya boyutunu değiştirme işlemi MODIFY FILE seçeneği veya DBCC SHRINKFILE komut son boyutunu daha küçük olamaz. Başka bir DBCC SHRINKDATABASE target_percentage parametre ve kullanılan geçerli alanı, bağımlı hesaplama kısıtlamasıdır.



Tempdb Shrink yöntem 3

Tek tek tempdb dosyalarını sıkıştırmak için DBCC SHRINKFILE komutunu kullanın. Bunu bir tek bir veritabanı dosyası üstünde aynı veritabanına ait diğer dosyaları etkilemeden kullanabilirsiniz çünkü DBCC SHRINKFILE DBCC SHRıNKDATABASE'den daha fazla esneklik sağlar. DBCC SHRINKFILE, veritabanı dosyasının son istenen boyuta olduğu hedef boyut parametresini alır.

ÖNEMLI: başka hiç bir etkinlik tempdb veritabanında oluşur, ancak DBCC SHRINKFILE komutunu çalıştırmanız gerekir. DBCC SHRINKFILE çalışırken diğer işlemler tempdb kullanamazsınız emin olmak için SQL Server tek kullanıcı modunda başlatmalısınız. DBCC SHRINKFILE hakkında daha fazla bilgi için bu makalenin <a1>Effects of Execution of DBCC SHRINKDATABASE or DBCCSHRINKFILE While Tempdb Is In Use</a3> bölümüne bakın.
  1. Birincil veri dosyasının (tempdb.mdf), günlük dosyası (templog.ldf) ve tempdb için eklenen ek dosyalar için istediğiniz boyutu belirler. Dosyaları kullanılan alanı istenen hedef boyutuna eşit veya bundan küçük olduğundan emin olun.
  2. SQL Server Query Analyzer ile bağlanın ve küçültmek için gereken belirli bir veritabanı dosyaları için aşağıdaki Transact-SQL komutları çalıştırın:
       use tempdb
       go
    
       dbcc shrinkfile (tempdev, 'target size in MB')
       go
       -- this command shrinks the primary data file
    
       dbcc shrinkfile (templog, 'target size in MB')
       go
       -- this command shrinks the log file, look at the last paragraph.
    						
DBCC SHRINKFILE bir avantajı, dosya boyutunu, özgün boyutundan daha küçük bir boyuta küçültebilirsiniz ' dir. DBCC SHRINKFILE herhangi bir veri veya günlük dosyalarının yayımlayabilir. Bir DBCC SHRINKFILE, veritabanı model veritabanını boyutunu daha küçük yapamazsınız, kısıtlamasıdır.

Bir işlem günlüğünü daraltma SQL Server 7.0 ertelenen bir işlemdir ve bir günlük kesilme ve küçültme işlemi bir veritabanı yardımcı olmak için yedekleme kesmeniz gerekir. Ancak, varsayılan olarak, tempdb ON chkpt oturum trunc seçeneği vardır; bu nedenle, varsa, o veritabanı için bir günlük kesilme vermek gerek yoktur. Veritabanını sıkıştırmak için hareket günlük nasıl SQL Server 7. 0 ', ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
256650  (http://support.microsoft.com/kb/256650/EN-US/ ) BILGI: SQL Server 7.0 işlem günlüğü Küçült edilir

DBCC SHRINKDATABASE veya Tempdb kullanılan iş ancak DBCCSHRINKFILE yürütülmesi etkileri

Tempdb kullanımda ve DBCC SHRINKFILE ya da DBCC SHRINKDATABASE komutları kullanarak küçültmek çalışırsanız, aşağıdaki tipine benzer birden çok tutarlılık hatası alabilirsiniz ve küçültme işlemi başarısız olabilir:
Sunucu: <a1>hata</a1> 2501, Level 16, durum 1, Line 1 '1525580473' adlı tablo bulunamadı. Sysobjects denetleyin.
-VEYA-
Sunucu: Msg 8909, Level 16, State 1, tablo <a1>Satır</a1> 0 hatalı: nesne KIMLIĞI 1, 0, dizin KIMLIĞI No % S_PGID sayfa. Sayfa üstbilgisinde PageId = <a1>%</a1> S_PGID.
<a1>Hata</a1> 2501 Dilek tempdb içinde herhangi bir bozulma olabilir, ancak küçültme işlemin başarısız olmasına neden olur. Diğer taraftan, <a1>hata</a1> 8909 <a0>tempdb</a0> veritabanında bozulma gösterebilir. Tempdb yeniden oluşturun ve tutarlılık hatası temizlemek için SQL Server'ı yeniden başlatın. Ancak, diğer nedenleri olabilir fiziksel veri bozulması hataları için hata 8909 ve bu, giriş/çıkış alt sorunları dahil gibi unutmayın.

Başvurular

SQL Server Books Online'da; konuları: "DBCC SHRıNKFıLE"; "DBCC SHRıNKDATABASE"


Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
Anahtar Kelimeler: 
kbmt kbhowtomaster KB307487 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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:307487  (http://support.microsoft.com/kb/307487/en-us/ )