Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

SQL Server tempdb veritabanında küçültme

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

307487
Özet
Bu makalede, Microsoft SQL Server tempdb veritabanında daraltmak için kullanabileceğiniz çeşitli yöntemler açıklanır. Bu makalede açıklanan yöntemleri kullanarak tempdb veritabanı daraltma önce lütfen aşağıdakilere dikkat edin:
  • Tempdb boyutu son yapılandırılmış boyutuna Sıfırla (diğer bir deyişle, varsayılan boyutu ya da alter veritabanıkullanılarak ayarlanmış olan son boyutu) her yeniden başlatma sonrasında. Bu nedenle, farklı değerler kullanmak hemen respite elde etmek veya yoksa, bu makalede açıklanan yordamları kullanmak gerekmez. Boyutunu azaltmak için SQL Server hizmeti yeniden başlatıldığında bekleyebilirsiniz. Büyük tempdb veritabanı boyutları SQL Server performansını olumsuz yönde etkilemez.
  • SQL Server 2005 ve sonraki sürümlerinde, tempdb veritabanı daraltma olgu dışında bir kullanıcı veritabanı daraltma daha farklı değildir, tempdb her SQL Server örneği yeniden başladıktan sonra yapılandırılmış boyutuna sıfırlar.
  • Tempdb sürekli etkinliktir shrink tempdb içinde çalışmasını güvenlidir. Ancak, engelleme, Kilitlenmeler ve shrink tamamlamanıza engel vb. gibi diğer hatalarla karşılaşabilirsiniz. Bu nedenle, tempdb küçültme başarılı olur emin olmak için sunucuyu tek kullanıcı modunda veya tüm tempdb etkinliği durduruldu olmakla birlikte, bunu yapmanızı öneririz.

Tempdb bilgileri

Geçici bir çalışma alanı tempdb veritabanıdır. SQL Server, tempdb birçok görevi gerçekleştirmek için kullanır. Bu görevler arasında şunlardır:
  • Açıkça oluşturulan geçici tablo depolama
  • İşlem ve sıralama sorgu sırasında oluşturulan ara sonuçları basılı worktables
  • Statik imleçler materialized
  • Anlık görüntü yalıtım düzeyleri veya okuma kaydedilmiş anlık görüntü yalıtım düzeyleri kullanıldığında sürüm kayıt depolama
SQL Server, tempdb hareket günlüğüne bir hareket geri almak için ancak hareketleri veritabanı kurtarma sırasında yineleme değil yalnızca yeterli bilgi kaydeder. Bu özellik Insert ifadelerini tempdb içinde performansını artırır. Ayrıca, günlük bilgileri tempdb, SQL Server her başlatışınızda yeniden oluşturulur, çünkü tüm işlemleri yeniden yapmak gerekmez. Bu nedenle, ileri geri veya geri almak için hiçbir hareket yok. SQL Server başladığında, tempdb model veritabanının bir kopyasını kullanarak yeniden oluşturulur ve tempdb son yapılandırılmış boyutuna sıfırlayın. Yapılandırılmış boyut değiştirme işlemi Dosya değiştirme seçeneği veya DBCC SHRINKFILE deyimi kullanan ALTER DATABASE gibi bir dosya boyutu kullanılarak ayarlanmış olan son açık boyutudur.

Varsayılan olarak, tempdb veritabanı otomatik büyüme için gerektiği şekilde yapılandırılmış. Bu nedenle, bu veritabanı beklenmedik şekilde zamanında bir boyuta istenen boyutundan daha büyüyebileceğini. SQL Server'ın basit bir yeniden başlatma tempdb boyutunu son yapılandırılmış boyutuna sıfırlar.

SQL Server 2005 ve sonraki sürümlerinde, tempdb boyutunu değiştirmek için aşağıdaki yöntemlerden birini kullanabilirsiniz.

YöntemYeniden başlatma gerekir?Daha fazla bilgi
ALTER VERİTABANIEvetTam denetim üzerinde (tempdev ve templog) varsayılan tempdb dosyalarının boyutunu verir.
DBCC SHRINKDATABASEHayırVeritabanı düzeyinde çalışır.
DBCC SHRINKFILEHayırTek tek dosyaları sıkıştırmak sağlar.
SQL Server Management StudioHayırBu temelde GUI üzerinden veritabanı dosyaları sıkıştırmak için bir yoludur.

Not SQL Server Management Studio'yu SQL Server 2005'te doğru tempdb dosyalarının boyutunu küçültme işlemi sonra göstermez. "Şu anda tahsis edilen alan" değeri her zaman DMV sys.master_files çekilen ve tempdb veritabanı için bir küçültme işlemi gerçekleştikten sonra bu değer güncelleştirilmez. Tempdb dosyalarını doğru boyutunu küçültme işlemi sonra bulmak için SQL Server Management Studio'da aşağıdaki deyimini yürütün:

use tempdbselect (size*8) as FileSizeKB from sys.database_files
İlk üç yöntem aşağıda açıklanmıştır.

Not SQL Server 2000 kurulumları için SQL Server Management Studio'da Query Analyzer kullanmanız gerekir. Ayrıca, DBCC komutlarını veritabanını tek kullanıcı moduna sokun gerektirecektir.

Kendi yapılandırılmış boyutundan daha küçük bir boyuta tempdb daraltmak için aşağıdaki üç yöntemi kullanabilirsiniz.

Yöntem 1: Kullanma Transact-SQL komutları
Not Bu yöntem SQL Server yeniden başlatmanız gerekir.
  1. SQL Server'ı durdurun.
  2. Komut isteminde, örneği en az yapılandırma modunda başlatın. Bunu yapmak için şu adımları izleyin:
    1. Bir komut isteminde aşağıdaki klasöre gidin:
    2. Örnek SQL Server'ın adlandırılmış bir örnek ise, aşağıdaki komutu çalıştırın:
      Sqlservr.exe -s ÖrnekAdı - c -f
      Örnek SQL Server'ın varsayılan örneği ise, aşağıdaki komutu çalıştırın:
      Sqlservr - c -f
      Not
      -C ve f - parametreler SQL Server, tempdb boyutu 1 MB veri dosyası ve günlük dosyası için 0.5 MB olan en az yapılandırma modunda başlatmak neden.
  3. Sorgu Çözümleyicisi'ni kullanarak SQL Server'a 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					
  4. SQL Server'ı durdurun. Bunu yapmak için komut istemi penceresinden Ctrl + C tuşlarına basın, SQL Server hizmeti 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 tempdb mantıksal dosya tempdev ve/veya templog çalıştığını kısıtlamasıdır. Tempdb için daha fazla dosya eklediyseniz, SQL Server hizmeti yeniden başlatıldıktan sonra bunları daraltabilirsiniz. Başlangıç sırasında tüm tempdb dosyalarını yeniden oluşturulur. Ancak, boş ve kaldırılabilir. Tempdb içinde ek dosyaları kaldırmak için REMOVE FILE seçeneğini kullanarak ALTER DATABASE komutunu kullanın.

Yöntem 2: DBCC SHRINKDATABASE komutunu kullanma
Tempdb veritabanını sıkıştırmak için DBCC SHRINKDATABASE komutunu kullanın. Parametre target_percentDBCC SHRINKDATABASE alır. Veritabanı küçültülebilir sonra bu istediğiniz veritabanı dosyasını sol boş alan yüzdesidir. DBCC SHRINKDATABASEkullanıyorsanız, SQL Server'ı yeniden başlatmanız gerekebilir.
  1. Tempdb içinde bilgilerini sp_spaceused saklı yordamını kullanarak şu anda kullanılan alanı belirleyin. Ardından, parametre olarak kullanmak için DBCC SHRINKDATABASEkalan boş alan yüzdesini hesaplayın. Bu hesaplama, istenen veritabanı boyutuna bağlıdır.

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

    Aþaðýdaki örneði ele alalým:
    O tempdb iki dosya olduğunu varsayalım: 100 MB ve 30 MB günlük dosyası (Tempdb.ldf) birincil veri dosyasının (Tempdb.mdf). Bu bilgilerini sp_spaceused birincil veri dosyasının 60 MB veri içeren raporları varsayalım. Ayrıca, birincil veri dosyası için 80 MB daraltmak istediğiniz varsayalım. Küçültme sonrasında istenen boş alan yüzdesini hesaplamak: 80 MB-60 MB = 20 MB. Şimdi, 20 MB bölmek ve yüzde 80 MB = 25 tarafından değil,target_percent. İşlem günlüğü dosyasının uygun şekilde küçültülebilir, % 25 veya 20 bırakarak MB disk alanı boşaltın veritabanı küçültülebilir sonra.
  2. Sorgu Çözümleyicisi'ni kullanarak SQL Server'a 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					
Tempdb veritabanında DBCC SHRINKDATABASE komutunu kullanmak için sınırlamalar vardır. Veri ve günlük dosyaları için hedef boyutu boyutunu daha küçük bir Dosya değiştirme seçeneği veya komutu kullanan ALTER DATABASE gibi dosya boyutunu değiştirme işlemini kullanarak açıkça belirlenmiş olan son veya oluşturulan veritabanı ne zaman belirtilenden daha küçük olamaz. Başka bir Gizli SHRINKDATABASEtarget_percentage parametre ve kullanılan geçerli alana bağımlı hesaplama kısıtlamasıdır.

Yöntem 3: DBCC SHRINKFILE komutunu kullanma
Tempdb dosyalarını ayrı ayrı daraltmak için DBCC SHRINKFILE komutunu kullanın. Çünkü bir tek bir veritabanı dosyası üstünde aynı veritabanına ait diğer dosyaları etkilemeden kullanabilmeniz için DBCC SHRINKFILEDBCC SHRINKDATABASE ' den daha fazla esneklik sağlar. DBCC SHRINKFILEHedef boyut parametresini alır. Veritabanı dosyası için istediğiniz son boyutu budur.
  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ında kullanılan alanı istenen hedef boyutuna eşit veya daha az olduğundan emin olun.
  2. Sorgu Çözümleyicisi'ni kullanarak SQL Server'a bağlanın ve aşağıdaki Transact-SQL komutları daraltmak istediğiniz belirli veritabanı dosyaları için ç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, examine the last paragraph.						
DBCC SHRINKFILE , onu bir dosya boyutunu özgün boyutundan daha küçük bir boyuta küçültebilirsiniz avantajlıdır. Herhangi bir veri veya günlük dosyalarını DBCC SHRINKFILE verebilir. Bir DBCC SHRINKFILE , veritabanı model veritabanının boyutu daha küçük yapamazsınız olduğunu kısıtlamasıdır.

Tempdb dosyalarını ayrı ayrı daraltmak için DBCC SHRINKFILE komutunu kullanın. Çünkü bir tek bir veritabanı dosyası üstünde aynı veritabanına ait diğer dosyaları etkilemeden kullanabilmeniz için DBCC SHRINKFILEDBCC SHRINKDATABASE ' den daha fazla esneklik sağlar. DBCC SHRINKFILEHedef boyut parametresini alır. Veritabanı dosyası için istediğiniz son boyutu budur.


küçültme işlemleri çalıştırdığınızda, 2501 ve 8909 hataları

Tempdb kullanılıyorsa ve DBCC SHRINKDATABASE veya DBCC SHRINKFILE komutu kullanarak küçültmek çalışırsanız, kullanmakta olduğunuz SQL Server sürümüne bağlı olarak, aşağıdakine benzer bir ileti alabilirsiniz:

SQL Server 2005 ve sonraki sürümleri

Sunucu: Msg 8909, Level 16, State 1, satır 1 tablo hata: nesne kimliği dizin kimliği -1, 0, 0, 0 (türü bilinmiyor) ayırma birim kimliği kimliği bölümü, sayfa kimliği (6:8040), sayfa üstbilgisindeki yanlış sayfa kimliği içerir. Sayfa üstbilgisinde PageId = (0:0).

SQL Server 2000
Sunucu: Msg 2501, düzey 16, State 1, satır 1 verebilir '1525580473' adlı tablo bulamaz. Sysobjects denetleyin.

Sunucu: Msg 8909, Level 16, State 1, satır 0 bozuk tablosu: nesne kimliği 1, 0, dizin kimliği sayfa kimliği % S_PGID. Sayfa üstbilgisinde PageId = % S_PGID.



Notlar
  • Bu hataları tempdb içinde gerçek bozuklukları göstermez. Ancak, fiziksel veri bozulması hataları hata 8909 gibi diğer nedenlerle olabilir ve bu nedenlerin g/ç alt sisteminin sorunları dahil olduğunu unutmayın. Bu nedenle, hata küçültme işlemleri dışında olursa, daha fazla araştırma yapmanız gerekir.
  • Uygulamaya veya küçültme işlemi yürüten kullanıcının 8909 iletisi döndürülür, ancak SQL Server 2005 ve sonraki sürümlerinde, küçültme işlemleri başarısız olmaz.
  • SQL Server 2000 ve önceki sürümlerinde, bu hatalar küçültme işlemleri başarısız olmasına neden olur. Bu nedenle tempdb veritabanını küçültmek için tempdb yeniden oluşturmak için SQL Server'ı yeniden başlatmanız gerekir. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    277848 SQL Server DBCC DBREINDEX çalıştırdığınızda hata iletisi "Tablo bozuk nesne kimliği 0, 0, dizin kimliği sayfa kimliği" oluşuyor


Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 307487 - Son İnceleme: 04/30/2014 17:28:00 - Düzeltme: 4.1

  • 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
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Parallel Data Warehouse
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Parallel Data Warehouse
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMttr
Geri bildirim