Aracılığıyla paylaş


İşlem günlüğü

Şunlar için geçerlidir: SQL Server

Her SQL Server veritabanı, tüm işlemleri ve her işlem tarafından yapılan veritabanı değişikliklerini kaydeden bir işlem günlüğüne sahiptir.

İşlem günlüğü veritabanının kritik bir bileşenidir. Sistem hatası varsa, veritabanınızı tutarlı bir duruma geri getirmek için bu günlüğe ihtiyacınız vardır.

Uyarı

Bunu yapmanın ne kadar önemli olduğunu tam olarak anlamadığınız sürece bu günlüğü asla silmeyin veya taşımayın.

İşlem günlüğünün fiziksel ve mantıksal mimarisi hakkında bilgi için bkz. SQL Server işlem günlüğü mimarisi ve yönetim kılavuzu.

Bahşiş

Denetim noktaları, veritabanı kurtarma sırasında işlem günlüklerini uygulamaya başlamak için bilinen iyi noktalar oluşturur. Daha fazla bilgi için bkz. Veritabanı denetim noktaları (SQL Server).

İşlem günlüğü tarafından desteklenen işlemler

İşlem günlüğü aşağıdaki işlemleri destekler:

  • Bireysel işlem geri kazanımı.
  • SQL Server başlatıldığında tamamlanmamış tüm işlemlerin kurtarılması.
  • Kurtarılan bir veritabanını, dosyayı, dosya grubunu veya sayfayı hata noktasına kadar ileri taşımak.
  • İşlem çoğaltmayı destekleme.
  • Yüksek kullanılabilirlik ve olağanüstü durum kurtarma çözümlerini destekleme: Always On kullanılabilirlik grupları, veritabanı yansıtma ve günlük gönderimi.

Bireysel işlem kurtarma

Bir uygulama bir ROLLBACK deyimi gönderirse veya Veritabanı Altyapısı bir istemciyle iletişim kaybı gibi bir hata algılarsa, tamamlanmamış bir işlem tarafından yapılan değişiklikleri geri almak için günlük kayıtları kullanılır.

SQL Server başlatıldığında tamamlanmamış tüm işlemlerin kurtarılması

Bir sunucu arızalanırsa, veritabanları arabellek önbelleğinden veri dosyalarına bazı değişikliklerin hiç yazılmadığı bir durum oluşabilir ve veri dosyalarında tamamlanmamış işlemlerden kaynaklanan bazı değişiklikler olabilir. BIR SQL Server örneği başlatıldığında, her veritabanının kurtarma işlemini çalıştırır. Günlükte kaydedilen ve veri dosyalarına yazılamamış olabilecek her değişiklik ileriye doğru aktarılır. Daha sonra işlem günlüğünde bulunan tamamlanmamış her işlem, veritabanının bütünlüğünün korundığından emin olmak için geri alınır. Daha fazla bilgi için bkz . Geri yüklemeye ve kurtarmaya genel bakış (SQL Server).

Geri yüklenmiş veritabanı, dosya, dosya grubu veya sayfayı hata noktasına kadar ileriye taşıma

Veritabanı dosyalarını etkileyen bir donanım kaybı veya disk hatasından sonra veritabanını hata noktasına geri yükleyebilirsiniz. İlk olarak son tam veritabanı yedeklemesini ve son değişiklik veritabanı yedeklemesini geri yüklersiniz ve ardından işlem günlüğü yedeklemelerinin sonraki sırasını hata noktasına geri yüklersiniz.

Her günlük yedeğini geri yüklerken, Veritabanı Altyapısı, tüm işlemleri ileri taşımak için günlükte kaydedilen tüm değişiklikleri yeniden uygular. Son günlük yedeklemesi geri yüklendiğinde, Veritabanı Altyapısı bu noktada tamamlanmamış tüm işlemleri geri almak için günlük bilgilerini kullanır. Daha fazla bilgi için bkz . Geri yüklemeye ve kurtarmaya genel bakış (SQL Server).

İşlem çoğaltmayı destekle

Günlük Okuyucu Aracısı, işlem çoğaltması için yapılandırılan her veritabanının işlem günlüğünü izler ve çoğaltma için işaretlenen işlemleri işlem günlüğünden dağıtım veritabanına kopyalar. Daha fazla bilgi için bkz . İşlem çoğaltması nasıl çalışır?

Yüksek kullanılabilirlik ve olağanüstü durum kurtarma çözümlerini destekleme

Hazır bekleyen sunucu çözümleri, Always On kullanılabilirlik grupları, günlük gönderimi, ve veritabanı yansıtması, işlem günlüğüne büyük ölçüde dayanır.

Always On kullanılabilirlik grupları senaryosunda, birincil çoğaltmadaki bir veritabanına yapılan her güncelleştirme, veritabanının tüm ikincil çoğaltmalardaki ayrı kopyalarında hemen yeniden oluşturulur. Birincil çoğaltma, her günlük kaydını hemen ikincil çoğaltmalara gönderir. Bu çoğaltma, gelen günlük kayıtlarını kullanılabilirlik veritabanlarına uygular ve günlüğü sürekli olarak iletir. Daha fazla bilgi için bkz. Always On yük devretme kümesi örnekleri (SQL Server).

günlük gönderim senaryosunda, birincil sunucu birincil veritabanının işlem günlüğü yedeklerini bir veya daha fazla hedefe gönderir. Her ikincil sunucu günlük yedeklemelerini yerel ikincil veritabanına geri yükler. Daha fazla bilgi için bkz. Günlük gönderimi hakkında (SQL Server).

veritabanı yansıtma senaryosunda, asıl veritabanına yapılan her güncelleme, veritabanının ayrı ve tam bir kopyası olan yedek veritabanında anında yansıtılır. Ana sunucu örneği, her günlük kaydını yansıtma sunucusu örneğine hemen gönderir. Yansıtma sunucusu örneği, gelen günlük kayıtlarını yansıtma veritabanına uygular ve bu veritabanını sürekli ileriye doğru taşır. Daha fazla bilgi için bkz . Veritabanı yansıtma (SQL Server).

İşlem günlüğü özellikleri

SQL Server Veritabanı Altyapısı işlem günlüğünün özellikleri:

  • İşlem günlüğü, veritabanında ayrı bir dosya veya dosya kümesi olarak uygulanır. Günlük önbelleği, veri sayfaları için arabellek önbelleğinden ayrı olarak yönetilir. Bu ayrım, SQL Server Veritabanı Altyapısı içinde basit, hızlı ve sağlam kodla sonuçlandı. Daha fazla bilgi için bkz . İşlem günlüğü fiziksel mimarisi.

  • Günlük kayıtlarının ve sayfalarının biçimi, veri sayfalarının biçimini takip etmek için kısıtlanmamıştır.

  • İşlem günlüğü birkaç dosyada uygulanabilir. Günlük değerini ayarlayarak FILEGROWTH dosyaları otomatik olarak genişletecek şekilde yapılandırabilirsiniz. Bu yapılandırma, işlem günlüğünde yer kalma olasılığını azaltır ve aynı zamanda yönetim ek yükünü azaltır. Daha fazla bilgi için bkz. ALTER DATABASE (Transact-SQL) dosya ve dosya grubu seçenekleri.

  • Günlük dosyalarındaki alanı yeniden kullanma mekanizması hızlıdır ve işlem aktarım hızı üzerinde en az etkiye sahiptir.

İşlem günlüğünün fiziksel ve mantıksal mimarisi hakkında bilgi için bkz. SQL Server işlem günlüğü mimarisi ve yönetim kılavuzu.

İşlem günlüğü kesilmesi

Günlük sıkıştırması, işlem günlüğü tarafından yeniden kullanılmak üzere günlük dosyasında yer açar. Ayrılan alanın dolmaması için işlem kütüğünüzü düzenli olarak temizlemeniz gerekir. Birkaç faktör günlük kaydının kesilmesini geciktirebilir, bu nedenle günlük kaydının boyutunun izlenmesi önemlidir. Bazı işlemler, işlem günlüğü boyutu üzerindeki etkisini azaltmak için en düşük düzeyde günlüğe kaydedilebilir.

Günlük kesilmesi, etkin olmayan sanal günlük dosyalarını (VLFs) SQL Server veritabanının mantıksal işlem günlüğünden silerek mantıksal günlükte fiziksel işlem günlüğü tarafından yeniden kullanılmak üzere yer açar. Bir işlem günlüğü hiçbir zaman kesilmezse, sonunda fiziksel günlük dosyalarına ayrılan tüm disk alanını doldurur.

Günlük kesilmesi bir nedenden dolayı geciktirilmediği sürece, alan tükenmesini önlemek için, kesme işlemi aşağıdaki olaylardan sonra otomatik olarak gerçekleşir:

  • Basit kurtarma modelinde, bir denetim noktasından sonra.

  • Tam kurtarma modeli veya toplu günlüğe kaydedilen kurtarma modeli altında, önceki yedeklemeden bu yana bir denetim noktası oluştuysa, kesme işlemi günlük yedeğinden sonra gerçekleşir (yalnızca kopya günlük yedeklemesi değilse).

  • Tam kurtarma modelini kullanan bir veritabanı ilk oluşturduğunuzda, tam veritabanı yedeklemesi oluşturduğunuz zamana kadar işlem günlüğü gerektiği gibi yeniden kullanılır (basit kurtarma modelini kullanan bir veritabanına benzer).

Daha fazla bilgi için bu makalenin devamında günlük kesilmesini geciktirebilecek faktörler bölümüne bakın.

Günlüğün kesilmesi, fiziksel günlük dosyasının boyutunu küçültmez. Fiziksel günlük dosyasının fiziksel boyutunu küçültmek için günlük dosyasını küçültmeniz gerekir. Fiziksel günlük dosyasının boyutunu küçültme hakkında bilgi için bkz. İşlem günlüğü dosyasının boyutunu yönetme. Ancak, günlük kesilmesini geciktirebilecek faktörleri aklınızda bulundurun. Günlük küçülttükten sonra depolama alanı yeniden gerekiyorsa işlem günlüğü yeniden büyür ve bunu yaparak günlük büyütme işlemleri sırasında performans yüküne neden olur.

Günlük kaydı kesilmesini geciktirebilecek faktörler

Günlük kayıtları uzun süre etkin kaldığında, işlem günlüğü kesilmesi gecikir ve bu makalenin önceki bölümlerinde açıklandığı gibi işlem günlüğü doldurulabilir.

Önemli

Tam işlem günlüğünü yanıtlama hakkında bilgi için bkz. Tam işlem günlüğü sorunlarını giderme (SQL Server hatası 9002).

Günlük kesilmesi çeşitli nedenlerle gecikebilir. Günlük kesilmenizi neyin engellediği hakkında bilgi edinmek için log_reuse_wait katalog görünümünün log_reuse_wait_desc ve sütunlarını sorgulayın. Aşağıdaki tabloda bu sütunların değerleri açıklanmaktadır.

log_reuse_wait değeri log_reuse_wait_desc değeri Açıklama
0 NOTHING Şu anda bir veya daha fazla yeniden kullanılabilir sanal günlük dosyası (VLFs) vardır.
1 CHECKPOINT Son günlük kesilmesinden bu yana herhangi bir denetim noktası oluşmadı veya günlüğün başı henüz bir sanal günlük dosyasının (VLF) dışına taşınmadı. (Tüm kurtarma modelleri.)

Bu senaryo, günlük kesilmesini geciktirmenin rutin bir nedenidir. Daha fazla bilgi için bkz. Veritabanı denetim noktaları (SQL Server).
2 LOG_BACKUP İşlem günlüğü kısaltılabilmesi için önce bir günlük yedeği gerekir. (Yalnızca tam veya toplu günlüğe kaydedilen kurtarma modelleri.)

Bir sonraki günlük yedeklemesi tamamlandığında, bazı günlük alanı yeniden kullanılabilir hale gelebilir.
3 ACTIVE_BACKUP_OR_RESTORE Veri yedekleme veya geri yükleme işlemi devam ediyor. (Tüm kurtarma modelleri.)

Veri yedeklemesi günlük kesilmesini engelliyorsa, yedekleme işlemini iptal etmek anında soruna yardımcı olabilir.
4 ACTIVE_TRANSACTION İşlem etkindir (tüm kurtarma modelleri):

Günlük yedeklemesinin başlangıcında uzun süredir devam eden bir işlem olabilir. Bu durumda, alanı açmak için başka bir günlük yedekleme işlemi gerekebilir. Uzun süreli işlemler, işlem günlüğünün genellikle her otomatik denetim noktasında kesildiği basit kurtarma modeli de dahil olmak üzere tüm kurtarma modellerinde günlük kesilmesini engeller.

Bir işlem ertelenmiş. ertelenen işlem, kullanılamayan bazı kaynaklar nedeniyle geri alınması engellenen aktif bir işlemdir. Ertelenen işlemlerin nedenleri ve bunların ertelenmiş durumdan nasıl taşınacakları hakkında bilgi için bkz. Ertelenen işlemler (SQL Server).

Uzun süre çalışan işlemler tempdb'ın işlem günlüğünü (transaction log) de doldurabilir. tempdb sıralama için iş tabloları, karma iş dosyaları, imleç çalışma tabloları ve satır sürümü oluşturma gibi iç nesneler için kullanıcı işlemleri tarafından örtük olarak kullanılır. Kullanıcı işlemi yalnızca okuma verileri (SELECT sorgular) içerse bile, iç nesneler oluşturulabilir ve kullanıcı işlemleri altında kullanılabilir. Ardından tempdb işlem günlüğü doldurulabilir.
5 DATABASE_MIRRORING Veritabanı yansıtma duraklatılmış durumda veya yüksek performans modu altındayken, ikinci veritabanı asıl veritabanının önemli ölçüde gerisindedir. (Yalnızca tam kurtarma modeli.)

Daha fazla bilgi için bkz . Veritabanı yansıtma (SQL Server).
6 REPLICATION İşlem çoğaltmaları sırasında, yayınlarla ilgili işlemler hala dağıtım veritabanına teslim edilmemiştir. (Yalnızca tam kurtarma modeli.)

İşlem çoğaltması hakkında bilgi için bkz. SQL Server çoğaltması.
7 DATABASE_SNAPSHOT_CREATION Veritabanı anlık görüntüsü oluşturuluyor. (Tüm kurtarma modelleri.)

Bu, gecikmiş günlük kırpılmasının rutin ve genellikle kısa bir nedenidir.
8 LOG_SCAN Günlük taraması oluşuyor. (Tüm kurtarma modelleri.)

Bu, gecikmiş günlük kırpılmasının rutin ve genellikle kısa bir nedenidir.
9 AVAILABILITY_REPLICA Kullanılabilirlik grubunun ikincil bir yedeği, bu veritabanının işlem günlüğü kayıtlarını karşılık gelen ikincil veritabanına uyguluyor. (Yalnızca tam kurtarma modeli.)

Daha fazla bilgi için bkz. Always On kullanılabilirlik grubu nedir?.
10 - Yalnızca dahili kullanım için.
11 - Yalnızca dahili kullanım için.
12 - Yalnızca dahili kullanım için.
13 OLDEST_PAGE Veritabanı dolaylı denetim noktaları kullanacak şekilde yapılandırılmışsa, veritabanındaki en eski sayfa, denetim noktası günlük sırası numarası (LSN)'den daha eski olabilir. Bu durumda, en eski sayfa günlük kesilmesini geciktirebilir. (Tüm kurtarma modelleri.)

Dolaylı denetim noktaları hakkında bilgi için bkz. Veritabanı denetim noktaları (SQL Server).
14 OTHER_TRANSIENT Bu değer şu anda kullanılmıyor.
16 XTP_CHECKPOINT In-Memory OLTP denetim noktasının gerçekleştirilmesi gerekir. Bellek için iyileştirilmiş tablolar için, işlem günlüğü dosyası son denetim noktasından bu yana 1,5 GB'tan büyük olduğunda otomatik bir denetim noktası alınır. (Hem disk tabanlı hem de bellek için iyileştirilmiş tabloları içerir.)

Daha fazla bilgi için bkz. Bellek için iyileştirilmiş tablolar için Denetim Noktası işlemi ve bellekiçin iyileştirilmiş tablolar için günlüğe kaydetme ve denetim noktası işlemi.

Günlük kaydı en aza indirilebilen işlemler

Minimum günlük kaydı , belirli bir noktaya kurtarmayı desteklemeden yalnızca işlemi kurtarmak için gereken bilgilerin günlüğe kaydedilmesini içerir. Bu makalede, toplu günlüğe kaydedilen kurtarma modeli altında (ve yedeklemenin çalıştırıldığı durumlar dışında basit kurtarma modeli altında) en az günlüğe kaydedilen işlemler tanımlanır.

Bellek için iyileştirilmiş tablolar için asgari düzeyde kayıt desteklenmez.

tam kurtarma modelialtında, tüm toplu işlemler eksiksiz günlüğe kaydedilir. Ancak, veritabanını toplu işlemler için geçici olarak "toplu kayıtlı kurtarma modeli"ne geçirerek günlüğe kaydetmeyi en aza indirebilirsiniz. Azaltılmış günlük kaydı, tam günlüklemeden daha verimlidir ve toplu işlem sırasında büyük ölçekli bir toplu işlemin kullanılabilir işlem günlüğü alanını doldurma olasılığını azaltır. Ancak, minimum günlükleme etkinken veritabanı zarar görürse veya kaybolursa, veritabanını hata anına kurtaramazsınız.

Tam kurtarma modeli altında tam olarak günlüğe kaydedilen aşağıdaki işlemler, basit ve toplu kayıt kurtarma modeli altında minimum düzeyde günlüğe kaydedilir:

  • Toplu veri aktarımı işlemleri (bcp, BULK INSERTve INSERT). Bir tabloya toplu içeri aktarmanın en az ne zaman günlüğe kaydedildiğini öğrenmek için bkz. Toplu içeri aktarmada minimum günlük kaydı için önkoşullar.

    İşlem çoğaltma etkinleştirildiğinde, BULK INSERT işlemler toplu günlüğe kaydedilen kurtarma modeli altında bile tamamen günlüğe kaydedilir.

  • SELECT - INTO yan tümcesi işlemleri.

    İşlem çoğaltma etkinleştirildiğinde, SELECT INTO işlemler toplu günlüğe kaydedilen kurtarma modeli altında bile tamamen günlüğe kaydedilir.

  • Yeni veri eklerken veya eklerken .WRITE deyimindeki yan tümcesini kullanarak büyük değer veri türlerinde kısmi güncelleştirmeler. Mevcut değerler güncellendiğinde minimal kayıt tutma kullanılmaz. Büyük değerli veri türleri hakkında daha fazla bilgi için bkz. Veri türleri.

  • metineklerken veya eklerken WRITETEXT ve UPDATETEXT deyimlerini , ntextve görüntü veri türü sütunları. Mevcut değerler güncellendiğinde minimal kayıt tutma kullanılmaz.

    Uyarı

    WRITETEXT ve UPDATETEXT deyimleri kullanım dışıdır. Bunları yeni uygulamalarda kullanmaktan kaçının.

  • Veritabanı basit veya toplu günlüğe kaydedilen kurtarma modeline ayarlanırsa, işlemin çevrimdışı veya çevrimiçi olarak çalıştırılıp çalıştırılmadığına bakılmaksızın bazı dizin DDL işlemleri en az günlüğe kaydedilir. En az günlüğe kaydedilen dizin işlemleri şunlardır:

    • CREATE INDEX işlemleri (endeksli görünümler dahil).

    • ALTER INDEX REBUILD veya DBCC DBREINDEX işlemi.

      Dizin oluşturma işlemleri minimum günlük kullanır, ancak eşzamanlı olarak çalışan bir yedekleme olduğunda gecikebilir. Bu gecikme, basit veya toplu günlüğe kaydedilen kurtarma modelini kullanırken en az günlüğe kaydedilen arabellek havuzu sayfalarının eşitleme gereksinimlerinden kaynaklanır.

      Uyarı

      deyimi DBCC DBREINDEX kullanım dışı bırakıldı. Yeni uygulamalarda kullanmaktan kaçının.

    • DROP INDEX yeni yığın yeniden derlemesi (varsa). İşlem DROP INDEX sırasında dizin sayfası ayırma işlemi her zaman tam olarak günlüğe kaydedilir.

Görev Makale
İşlem günlüğünü yönetme İşlem günlüğü dosyasının boyutunu yönetme

Tam işlem günlüğü sorunlarını giderme (SQL Server hatası 9002)
İşlem günlüğünü yedekleme (yalnızca tam kurtarma modeli) İşlem günlüğünü yedekleme

Veritabanı zarar gördüğünde işlem günlüğünü yedekleme (SQL Server)
İşlem günlüğünü geri yükleme (yalnızca tam kurtarma modeli) İşlem günlüğü yedeklemeyi geri yükleme (SQL Server)