Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
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çin
İ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üğü aşağıdaki işlemleri destekler:
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.
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).
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).
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.
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.
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çin
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
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
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 |
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.
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:
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ı
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) |
Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunEğitim
Belgeler
Otomatik büyütme ve otomatikshrink ile ilgili dikkat edilmesi gerekenler - SQL Server
Bu makalede, ortamınız için otomatik büyütmeyi ve otomatik biçimlendirmeyi seçtiğinizde ne olacağı hakkında bilgi sağlanır.
sys.dm_db_log_info (Transact-SQL) - SQL Server
sys.dm_db_log_info (Transact-SQL) dinamik yönetim işlevi, işlem günlüğünden sanal günlük dosyası (VLF) bilgilerini döndürür.