INF: SQL işlem günlüğünün dolmaya nedenleri

Makale çevirileri Makale çevirileri
Makale numarası: 110139 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

SQL Server işlem günlüğü, güncelleştirme, silmeveya aktivite EkleDenetim noktasıdahil olmak üzere veritabanındaki başka engeller dolu olabilir. Bu genellikle 1105 hata olarak görülür:
Logsegment dolu olduğundan dbname veritabanı içinde nesne syslogs için alanı ayrılamıyor. Syslogs yer çalıştırdıysanız, işlem günlüğünün dökümünü. Aksi halde kesim boyutunu artırmak için ALTER DATABASE veya sp_extendsegment kullanın.
Ana veya tempdbdahil olmak üzere herhangi bir veritabanı üzerinde oluşabilir. Olası nedenleri ve çözümleri hata 1105 led bu sorunları anlatılmaktadır. İşlem günlüğü otomatik olarak doldurduğu ve şu anda 1105 hata alıyorsanız, günlük Hareket dökümü deyimini kullanarak boş gerekir. Hareket dökümükullanma hakkında daha fazla bilgi için SQL Server belgelerinize bakın.

Daha fazla bilgi

Bir temel doğru ilişkisel veritabanları, Microsoft SQL Server gibi hareketsel bütünlük özelliğidir. Herhangi bir hareket tamamen atomik (diğer bir deyişle, işlevsel olarak bölünemez) tüm değişiklikleri ya da uygulanan veya gerekir, bir sistem hatası durumunda bile uygulanmamış olmasıdır. Kullanıcı tanımlı bir işlem içinde tüm ifadeleri BEGIN TRANSACTION ve hareket TAMAMLAMA ifadelerine göre ayraçlı uygulanmış veya uygulanmamış. Örtülü bir işlem içinde tek her SQL deyimi bir atomik birim olarak kabul edilir.

Bu yeteneği SQL Server'ın bir güç kesintisi, işletim sistemi çökmesi ve diğerleri, üretim deneyimi sağlar ve böylece otomatik olarak kurtarma veritabanı tutarlı bir duruma, insan etkileşimi olmadan gerekli yeniden başlattıktan sonra. Bu veritabanı için bir sistem hatasının ardından tutarlılığı sorunları incelemek için uzun el ile gerçekleştirilen yordamlar genellikle gerektiren ilişkisel olmayan sistemleri ile karşılaştırır.

Hareket günlüğü ne bu özelliği sağlayan mekanizmadır. İşlem bütünlüğü SQL Server'ın temel, iç bir özelliği olarak kabul beri günlüğe kaydetme devre dışı bırakılamaz. Belirli bir hizmet programı veya hızlı BCP ve SELECT INTO gibi bakım işlemleri geri almak mümkün olması için en az, hatta bu günlük ölçüde ayırmaları günlüğü yapın.

Günlüğe kaydetme için boş alan gereksinimleri önemli ölçüde olabilir. Örneğin, çoğu durumda önce ve sonra resim her güncelleştirildiğinde veri satırı kaydedilmesi gerekir ve ayrıca herhangi etkilenen dizin satır. Günlüğe kaydedilen her satır için sabit belli bir hareket kaydı yükünü kaydedilmesi gerekir çünkü bağlı olarak satır genişliğini güncelleştirilmiş verileri günlük alanı tüketim oranı değişir. Dar bir satır için bir ilgili güncelleştirme, silmek veya eklemek için kullanılan günlük alanı on kez tüketilen veri alanı olabilir. Geniş satırları için günlük alanı tüketilen miktarı orantılı olarak daha az olacaktır. Günlük alanı tüketimi hareketsel bütünlüğünü sağlama kaçınılmaz bir sonucu olduğunu. Veritabanı Yöneticisi, kendi özel yükleme için yeterli günlük alanı sağlamanız gerekir.

Gereken boş yer günlük birçok etkene bağlı olarak değişebilir ve doğru bir şekilde önceden tahmin etmek çok zor. Veritabanı boyutunun yüzde 15-30 gibi genel başparmak kuralı rakamları bazen günlük boyutlandırma için başlangıç noktası olarak açıklanan, ancak çünkü bu büyük ölçüde farklılık gösterir. SQL Server kurulumlarının başarılı genellikle kendi belirli veri ve uygulamaları için günlük alanı gereksinimleri kabaca değerlendirmek için bazı basit ampirik testler yapmak ve sonra bunu temel alarak kendi günlüğü boyutu. Zor ve genellikle yanlış hesaplamalar ve testleri olmadan yalnızca dayalı günlüğü boyutu çalışılıyor.

Çeşitli faktörler öngörmek zor günlük alanı tüketimi değişimiyle ilgili hesaba katabilir. Sorgu en iyi duruma getiricisi bir faktördür. Verilen veri değişikliği için SQL deyimi, erişim planı verilerinin istatistiksel dağıtım bağlı olarak zamanla değişebilir. Farklı erişim planları, farklı miktarlarda günlük alanı kullanılmasına neden olabilir. Gerçekleştirilen sayfa bölmelerini sayısını etkileyebilir kaçınılmaz iç veritabanı parçalanma başka bir faktördür. Hiçbir şey yoktur ya da SQL Server kullanıcı verilerini otomatik olarak yönetir gibi incelemek veya bu işlemi etkilemek için yapılması gerekir.

Önce ve sonra veri değişikliği sorgularınızı gösteren bir örnek yürütme günlüğüne 2048 bayt veri sayfalarının sayısını verir DBCC CHECKTABLE(syslogs) çalıştırmak için basit bir sınama örneği olacaktır. Bu bir yaklaşık günlük alanı gereksinimi sorguları bu tür için fikir verebilir. SQL Server gibi ilişkisel veritabanları için günlük veya veri disk alanı sağlarken aşırı yan tarafında err genellikle en iyisidir.

SQL Server 7.0 ve 2000 sınıfı sunucuları için işlem günlüğü gerektiği şekilde genişletme olanağı vardır. Büyüme miktarı, kullanıcı tarafından yönetilen veya tüm kullanılabilir disk kapasitesi kullanmaya izin verilmiyor. Bir günlük dosyası sanal günlük dosyaları bir dizi oluşur. Sayı ve boyutu bu sanal günlük dosyaları, SQL Server tarafından belirlenir ve yapılandırılamaz. Bir veritabanını ilk kez oluşturulduğunda, her fiziksel bir günlük dosyası en az 2 sanal günlük dosyaları vardır. Bazen veritabanı Yöneticisi veritabanı "truncate log on checkpoint" seçeneği günlük alanının azalmasına ve dolayısıyla önlemek için çaba sağlayacaktır. Bu seçeneğin amacı, çoğunlukla için geliştirme veya günlük yedekleme için aktarımları kullanan değil veritabanlarını test günlüğünün kesilmesi otomatik bir yöntem sağlamaktır. Bu seçenek, günlük tutmanın veya işlem bütünlüğü devre dışı bırakmaz. Yalnızca bir günlük kesilme yaklaşık olarak her 60 saniyede bir denemek denetim noktası işleyicisini çalıştırmaya neden olacak. Günlük veritabanını el ile denetim noktası komutunda "truncate log on checkpoint" ile üzerinde verilirken kesilecek yok olduğunu unutmayın. Durum sütununda, sp_help saklı yordam çıkış belirtilmemiş olsa da bu seçenek her zaman tempdb veritabanı için açıktır.

Hatta "truncate log on checkpoint" seçeneği etkinken, bir dizi etken günlük alanının azalmasına ve dolayısıyla neden olabilir. Bunlar aşağıda listelenmiştir:
  1. Büyük bir atomik işlem, özellikle toplu bir güncelleştirme, ekleme veya silme: tek her SQL deyimi bir atomik birim thatmust uygulanan veya tümüne uygulanan değil kabul edilir. Bu nedenle, tüm rowalterations oturum açmanız ve hareket itsduration kesilmiş olamaz. Örneğin, beş dakikalık bir runningtime sahip olan büyük toplu INSERT verildiği, bu işlem tarafından tüketilen günlük truncatedfor bu dönem olamaz. Veritabanı Yöneticisi, yeterli günlük spacefor en büyük toplu işlemin beklenen veya toplu işlem insmaller grupları gerçekleştirmelisiniz sağlamanız gerekir.
  2. Kaydedilmemiş bir hareket: günlük yalnızca en eski UNCOMMITTED hareket için truncatedprior olabilir. Hangi uygulama hatalarının çoğu UNCOMMITTED hareket, birkaç olası causesof vardır. Theseinclude:
    1. Toplu işlem: yukarıda kabul gibi büyük toplu işlem günlük süresi için onu tarafından oluşturulan kayıtlar kesilmiş olamaz. Ancak, böyle bir hareket de aynı dönem içinde tamamlanması daha kısa diğer hareketleri, günlük kesilme kaydetme işlemini önler.

      Örneğin, veritabanı Yöneticisi günlük boyutu en büyük yerleşimiyle toplu işlem için yeterli olduğunu söyleyin. Henüz bu işlem çalışırken, diğer kısa veri değişikliği deyimleri günlük alanı da tüketen. Bu günlük alanı büyük toplu işlem önce başlatılan ve bu yüzden eski UNCOMMITTED hareket olur bu yana kesilmiş olamaz. Yönetici eşzamanlılık ve büyük toplu işlem günlüğü etkilerini dikkate alın ve günlük için uygun boyutlar belirleyin.
    2. İzin veren kullanıcı girişi veya kullanıcı tanımlı bir işlem içinde uzun diğer etkinliklerin bir kötü tasarlanmış bir uygulama. Örneğin, BEGIN TRANSACTION kestikten sonra bir uygulama kullanıcı davranışını bağlı olarak uzun bir zaman alacak girişini kullanıcıdan. Kullanıcı yanıt verir ve bir TAMAMLAMA uygulama sorunları kadar günlük kesilmesi mümkün değil.
    3. İçinde bir hareket değil taahhüt edilen bir uygulama hatası: bir ortak bu DB-Library çağrı dbcancel() kullanıcı tanımlı bir işlem içinde hatalı işlenmesi nedenidir. Bir sorgu ile dbcancel() iptal edildiğinde, şu anda yürütülen SQL deyimi iptal ve geri alınabilir, ancak dış işlem değil. Uygulama, bunun farkında olmanız ve hareket kapatmak için gerekli ROLLBACK İŞLEMİNİ veya TAMAMLAMA hareket ifade vermek gerekir. Bunu gerçekleştirmede başarısızlık genellikle 3902 hataya neden:
      Tamamlama hareketine karşılık gelen BEGIN TRANSACTION vardır.
      Uygulama düzey iç içe geçmiş bir hareketi hangi belirlemek için SELECT @@TRANCOUNT göndermek yararlı olabilir. Ancak, uygulama değil doğrudan Bunu yapmak ve sonra @@TRANCOUNT elde etmek için TAMAMLAMA/ROLLBACK vermek = 0. @@TRANCOUNT ne uygulama bekler her zamankinden farklıysa, bu uygulamayı bir uygulama tasarım hatası transaction iç içe geçme düzeyini izini kaybetti gösterir çünkü. Bu noktada TAMAMLAMA/ROLLBACK veren uygulama veya uygulama istenmeyen işlem düzeyinde hareketlerin sonuçlandı bilmez istenmeyen hareketleri durduruluyor neden olabilir. Bunun yerine, programcı uygulama ve istenmeyen işlem düzeyi nedenini belirlemek için tüm saklı yordamlar hata ayıklama.
    4. Bozuk ağ bağlantısının SQL Server bilgilendirmemeyi bir ağ hatası: ağ katmanı istemci iş istasyonunun askıda kalıyor, bilgisayarı yeniden başlatır veya kullanıcı tanımlı bir işlem içinde kapanır, SQL Server'ın bu bildirmek. Ağ düzgün Bunu yapmazsanız, SQL Server istemci yok gibi görünüyor ve bundan açık hareket açısından istemci korunur. Bu, bir ağ sorunu var ve bu şekilde takip gerekir. Geçici bir çözüm, yönetici el ile sonlandırın ve yine de sp_who, sp_lock veya hangi istemci oturumu hala bulunan bir ağ hizmet programını kullanarak belirlemek mümkün olabilir.
    5. Engelleme nedeniyle kabul edilen değil hareket: çok kullanıcılı bir ortamda başka bir işlem tarafından tutulan kilitlerin engellenmiş duruma gelmesine açık bir hareketi mümkündür. Bu durumda, hareket yine de günlük kesilme önleme açık kalır. Bu saptamaya, programcı veya veritabanı yöneticilerinin sp_who, sp_lock veya diğer araçları eşzamanlılık ortamı çözümlemek için kullanmanız gerekir. Çoğu durumda engelleme sorunlarını azaltılmış veya uygun sorgu, dizin ve veritabanı tasarım ortadan kalkar.
    6. Veri değiştirme sorgusu iptal etmek için başarısız girişim: uygulama bir dbcancel() verir ve bir ağ veya SQL sorunu sorguyu iptal edilmedi sorgu çalışmaya devam eder ve hareket açık kalır. Burada bir sorun olduğundan kuşkulanıyorsanız, sp_who sorguyu iptal edilirse, görmek için kullanın. TCP/IP sockets istemciden gelen iptal etmek çalışırken, adlandırılmış yöneltmeler istemci testi deneyin veya istemci uygulaması sunucu bilgisayardaki yerel kanallar kullanarak çalıştırın. Bu, bir ağ veya SQL sorunu iptal engellemediğini keşfedilir yardımcı olur.
  3. Denetim noktası işleyicisi kesme bant genişliği aşıldı: Althoughthe günlük 60 saniyede, bu kesme takesplace olduğu sonlu hızı kesildi. Bu senaryo seyrektir ve diğer olası nedenlerini logoverflow kabul ve thispossibility inceleyerek önce ilk çıkar çizgili. Ancak, olası en yüksek kesme aşmayı hızı ifmany istemciler aynı anda büyük güncelleştirmeleri çalıştırmaya. Bu, yalnızca belirli bir hızda sıvı tükenir afunnel benzeyen ve fazla doldurulan evenwhile Boşalma. Bu senaryoda, uygulama reducethe satır sayısı olarak her zaman birincil olması gereken güncelleştirilmekte, yeniden oluşturulamaz herhangi bir ilişkisel veritabanı goalfor yine de tasarlayabilirsiniz.

    Bu uygun değilse, etmektense artan disk g/ç bant genişliği rağmen bölmek, ek denetleyicileri ve diğerleri için yeniden yapılandırılması. Günlük kesilme ile tutmaya çalışır gibi bu durumda thecheckpoint görmek için işleyici işlem harcamak zaman miktarda DUMPTRANSACTION durumunda, artan yaygındır. Thetruncation eşiği aşıldı sonra (aşağıya bakın) günlük iscleared kadar kesme, veritabanındaki her zamankinden denemek checkpointhandler göremeyebilirsiniz.
  4. Kesme eşiği aşıldı: checkpoint handleressentially almaz bir DÖKÜM işlemi ile TRUNCATE_ONLY ile aynıdır. Sadece sanki günlük tam acertain noktasına ise bu wasissued el ile onu her zaman başarısız olur. Örneğin, bir veri bloğu güncelleştirme etkinliği denetim noktası işleyicisi tarafından ziyaretleri günlük to95% doldurabilir. Günlük tamamen dolu olmasa checkpoint handlerattempts kesilmesi, bu olabilir çok fullto izin kesme. Günlük kesilme kendisini belogged gerekir çünkü. Tek çözüm bu durumda DÖKÜM HAREKETİ ile NO_LOGto el ile kesme günlük kullanmaktır. NO_LOG seçeneğini kullanarak önerilmez exceptwhen kesinlikle gerekli olmayan kaydedilmiş bir işlem olduğu gibi hangi systemfailure sırasında veritabanını hatalara neden.
  5. Yukarıdakilerin tümü arasındaki etkileşimler: Örneğin, undernormal koşullar bir güncelleştirme yoğun ortamda checkpoint handlertruncation oranı günlüğü doldurmasını tutmak. Bir geçici olarak (örneğin, kilit uyuşmazlığı) yukarıdaki koşulların herhangi biri nedeniyle opentransaction neden olan günlük söylemek istiyorsanız, % 50 doldurmak, çok daha büyük bir olasılıkla, bu noktada otomatik kesme olmayacak mümkün thetruncation eşik ulaşmak yapmak diğer güncelleştirme durumlarda daha az boş alan çalıştırarak olacaktır.Tempdb içinde hareketler gibi başka bir veritabanında günlüğe kaydedilir. TRUNCATE LOG ON CHECKPOINT üzerinde çoğu durumlarda günlük kesilecek ve notoverflow tempdb içinde olduğundan. Ancak, yukarıdaki durumların herhangi birinde yukarı tempdb günlük tofill oluşabilir. Veri ve günlük işlemler için sameavailable alan Yarışan şekilde Tempdb genellikle karışık günlük ve data(sysusages.segmap=7) için yapılandırılır. GROUP BY, Sipariş olarak DESCve diğerleri, otomatik olarak tempdb için çalışma alanı gerektirir gibi bazı Transact-SQL oluşturur.Bu da bir örtülü BEGIN TRANSACTION kaydı için çalışma alanı tempdb içinde neden olur. Hareket süresi boyunca bu dönem için defertempdb günlük kesilme olabilir kullanıcı veritabanında bu tempdb hareket willcontinue. Sol likewisebe engelleyen bir kilit veya tamamlama, tempdb hareket için uygulama notprocessing dbnextrow() dahil olmak üzere herhangi bir nedenle kullanıcı db ishalted hareket edecek açık, önleme tempdb oturum kesilme. Programcı gerekir yükleyebilen hata ayıklama ve/veya bu neden eşzamanlılık sorunlarını çözme.
  6. SQL Server 7.0 and2000 sınıfı sunucuları, işlem günlüğünün kesilmesi sanal günlüğü dosyalarının kesilmesi tarafından gerçekleştirilir. Anyportion etkin günlüğün üzerinde belirli bir VLF yerleşik olup, sanal günlük Filecannot kesilebilir. Tüm sanal günlük dosyaları etkin günlük yerleşik ise günlük kesilmiş olamaz. Autogrowth etkin ve burada işlem günlüğünün bulunduğu ve en büyük dosya boyutuna sahip değil beenreached thevolume alan ise, işlem günlüğünün günlük fileproperties içinde belirtilen miktar büyür.
TRUNCATE LOG ON CHECKPOINT ayarlanıp ayarlanmamasına bağlı SQL başlangıçta günlük kesilme davranış açıklanır.
  • TRUNCATE LOG ON CHECKPOINT ayarlayın ve günlük başlangıç sırasında tam olarak bulunuyorsa, otomatik olarak no_log ile dökümünün.
  • Hiçbir zaman yüklenebilmesi için kendi günlük ayrı aygıtta yerine TRUNCATE LOG ON CHECKPOINT şimdi varsayılan ana olmasıdır. Tam aldığında yalnızca uygun günlük olayını kullanın seçenektir.
  • TRUNCATE LOG ON CHECKPOINT ayarlanmamıştır ve günlük başlangıç sırasında tam olarak bulundu, Kurtarma tamamlandıktan, ancak son denetim noktası yazılmadı. Bir administratorcan veritabanına almak ve verileri kaydetmek, daha sonra onu Temizle (veya yalnızca temizlemek) için no_log ile döküm no_truncate ile günlük dökümü.

REFERANSLAR


Daha fazla bilgi için aşağıdaki Microsoft Training & Certification kursuna başvurun:
Microsoft Corporation Microsoft SQL Server 2000 veritabanına 2072 yönetme
SQL Server 7l 0 belirli ve daha sonra sorunlar için aşağıdaki Microsoft Bilgi Bankası makalesine bakın:
317375 INF: İşlem günlüğü beklenmedik biçimde büyüyor veya SQL Server üzerinde

Özellikler

Makale numarası: 110139 - Last Review: 17 Haziran 2014 Salı - Gözden geçirme: 6.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 4.21a Standard Edition
Anahtar Kelimeler: 
kbsqlsetup kbinfo kbother kbmt KB110139 KbMttr
Machine-translated Article
Ö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: 110139
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com