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.

Makalenin İngilizcesi aşağıdaki gibidir: 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 veya hemen respite elde etme 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ı o tempdb her SQL Server örneği yeniden başlatma sonrasında yapılandırılmış boyutuna sıfırlar.
  • Tempdb etkinliği sürmekte iken shrink tempdb içinde çalıştırmak 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 veritabanı kurtarma sırasında hareketlerin yinelemek değil yalnızca yeterli bilgi kaydeder. Bu özellik, Insert ifadelerini tempdb içinde performansını artırır. Ayrıca, tempdb, SQL Server her başlatışınızda yeniden oluşturulur, çünkü tüm işlemler yinelemek için bilgileri günlüğe gerekmez. Bu nedenle, ileri geri veya geri almak için hiçbir hareket yok. SQL Server başladığında, tempdb modeli 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 veya DBCC SHRINKDATABASE deyimleri kullanan ALTER DATABASE gibi bir dosya boyutu kullanarak ayarladığınız son açık boyutudur.

Varsayılan olarak, tempdb veritabanı otomatik büyüme için gerektiği şekilde yapılandırılır. 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öntemiYeniden başlatma gerektirir?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 Studio'daHayırBu temelde GUI üzerinden veritabanı dosyaları sıkıştırmak için bir yoludur.

Not SQL Server Management Studio'yu SQL Server 2005'te bir küçültme işlemi sonra doğru tempdb dosyalarının boyutunu 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. Bir küçültme işlemi sonra doğru boyutta tempdb dosyalarını bulmak için SQL Server Management Studio'da aşağıdaki deyimini yürütün:

use tempdbgoselect (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 yerine SQL Server Management Studio'da Query Analyzer kullanmak gerekecektir. 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 - parametreleri 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.
Bu yöntemin bir sınırlama yalnızca varsayılan tempdb dosyalarını mantıksal tempdev ve/veya templog işlediğinden emin olur. 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ı küçültmek 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 hesaplamak. 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 dosyalarını iki 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ğinizi 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 komutu kullanmak için sınırlamalar vardır. Veri ve günlük dosyaları için hedef boyutu boyutunu veya 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 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
Tek tek tempdb dosyalarını sıkıştırmak için DBCC SHRINKFILE komutunu kullanın. Aynı veritabanına ait diğer dosyaları etkilemeden, bir tek bir veritabanı dosyası üstünde kullanabilirsiniz çünkü 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 sonra daraltmak istediğiniz belirli 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, examine the last paragraph.						
DBCC SHRINKFILE bir avantajı, bir dosya boyutunu özgün boyutundan daha küçük bir boyuta küçültebilirsiniz olur. 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.

Tek tek tempdb dosyalarını sıkıştırmak için DBCC SHRINKFILE komutunu kullanın. Aynı veritabanına ait diğer dosyaları etkilemeden, bir tek bir veritabanı dosyası üstünde kullanabilirsiniz çünkü 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ılan 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 kimlik 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 hatalardan, tempdb içinde gerçek bozuklukları göstermez. Ancak, fiziksel veri bozulması hataları hata 8909 gibi başka nedenlerle olabilir ve bu nedenlerin g/ç alt sisteminin sorunları içerdiğini unutmayın. Bu nedenle, küçültme işlemleri dışında hata ortaya çıkarsa, 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 gerekecektir. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayı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/26/2016 03:25:00 - Düzeltme: 5.0

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 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Enterprise Core, Microsoft SQL Server 2016 Standard

  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMttr
Geri bildirim