İngilizce dilinde oku

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üğü mimarisi ve iç özellikleri hakkında bilgi içinSQL Server işlem günlüğü mimarisi ve yönetim kılavuzuna bakın.

İpucu

Veritabanı kurtarma sırasında işlem günlüklerini uygulamaya başlamak için bilinen iyi noktalar denetim noktaları tarafından oluşturulur. 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ükleme ve Kurtarma'ya 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ükleme ve Kurtarma'ya 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ğaltma 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ıtması (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 ve bu da SQL Server Veritabanı Altyapısı içinde basit, hızlı ve sağlam kodla sonuçlanır. 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. Dosyalar, günlük için FILEGROWTH değeri ayarlanarak otomatik olarak genişletilecek şekilde tanımlanabilir. Bu, işlem günlüğünde yer kalma olasılığını azaltırken, aynı zamanda yönetim 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üğü mimarisi ve iç özellikleri hakkında bilgi içinSQL Server işlem günlüğü mimarisi ve yönetim kılavuzuna bakın.

İş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 etkilerini azaltmak için en düşük düzeyde günlüğe kaydedilebilir.

Günlük kesilmesi, aktif 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 alan 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 kullanarak ilk kez veritabanı 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ındagü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 göz önünde bulundurun. Günlük küçültüldükten sonra depolama alanı yeniden gerekiyorsa, işlem günlüğü yeniden büyür ve bu da 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 aktif kaldığında, işlem günlüğü kesilmesi gecikir ve bu makalede daha önce bahsettiğimiz gibi işlem günlüğü dolabilir.

Ö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 sys.databases katalog görünümünün log_reuse_wait ve log_reuse_wait_desc 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 hiçbir denetim noktası oluşmadı veya günlüğün başı henüz sanal günlük dosyası (VLF) (Tüm kurtarma modelleri) dışına taşınmadı.

Bu, günlüklerin 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ük kaydı yapılan 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 İş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ıtması (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ğaltma.
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ı yapılıyor (Tüm kurtarma modelleri).

Bu, günlük kesme gecikmesinin 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 iç kullanım için
11 - Yalnızca iç kullanım için
12 - Yalnızca iç 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 kısaltılmasını 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 (hem disk tabanlı hem de bellek için iyileştirilmiş tabloları içerir) otomatik bir denetim noktası alınır.

Daha fazla bilgi için bkz. Memory-Optimized Tabloları için Denetim Noktası İşlemi ve In-Memory İyileş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ı, yalnızca işlemi kurtarmak için gereken bilgilerin kaydedilmesini içerir; anlık zaman dilimi kurtarmasını desteklemez. Bu makale, toplu günlüğe kaydedilen kurtarma modeli altında (ve bir yedekleme çalışmadığı sürece basit kurtarma modeli altında) en az günlüğe kaydedilen işlemleri tanımlar.

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, toplu kaydedilen kurtarma modeli altında bile BULK INSERT işlemleri tamamen günlüğe kaydedilir.

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

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

  • Yeni veri eklerken veya eklerken UPDATE deyimindeki .WRITE 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üncelleştirildiğinde asgari kayıt kullanılmaz.

    Uyarı

    WRITETEXT ve UPDATETEXT ifadeleri artık kullanılmıyor; yeni uygulamalarda kullanmaktan kaçının.

  • Veritabanı basit veya toplu günlüğe kaydedilen kurtarma modeline ayarlanırsa, işlem çevrimdışı veya çevrimiçi yürütüldüğünde bazı dizin DDL işlemleri asgari düzeyde günlüğe kaydedilir. Asgari düzeyde günlüğe kaydedilen indeks işlemleri aşağıdaki gibidir:

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

    • ALTER INDEX REBUILD veya DBCC DBREINDEX işlemi.

      Dizin oluşturma işlemleri asgari düzeyde günlükleme kullanır, ancak aynı anda yürütülen bir yedekleme sırasında gecikebilir. Bu gecikme, basit veya toplu günlüğe kaydedilen kurtarma modeli kullanıldığında, asgari düzeyde günlüğe kaydedilen arabellek havuzu sayfalarının eşitleme gereksinimlerinden kaynaklanır.

      Uyarı

      deyimikullanım dışıdır; yeni uygulamalarda kullanmaktan kaçının.

    • DROP INDEX yeni yığın yeniden derlemesi (varsa). DROP INDEX işlemi 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

- Dolu işlem günlüğü sorununu gider (SQL Server Hatası 9002)
İşlem günlüğünü yedekleme (yalnızca tam kurtarma modeli) - İşlem günlüğü yedekleme

Veritabanı Zarar Gördüğünde İşlem Günlüğünü Yedekleme (SQL Server)
İşlem günlüğünü geri yükleme (yalnızca tam kurtarma modeli) - İşlem Günlüğü Yedeklemesini Geri Yükleme (SQL Server)