SQL Server ERRORLOG İçin Best practices
Kategori: Performans
SQL Server hata günlüğü nedir?
Yedeklemeler, dump dökümleri ve diğer birçok bilgi olayı olarak meydana gelen olaylar hakkında veri yazmak için SQL sunucusu tarafından kullanılan bir dosyadır.Bunu neden önemsemelisiniz?
SQL Error günlüğü çok büyüdüğünde, onları açmak daha zordur. Bu nedenle, boyutun büyükten daha küçük tutulmasını istiyorsunuz. Hataların daha büyük dosyaları “gizlemesi” daha kolaydır. Sorun giderme getirilir. Yeterli hata günlük dosyasının olmaması (7 günlük dosyası tutacak şekilde yapılandırılmış, kullanılabilir maksimum dosya sayısı 99’dur), sorun gidermeyi zorlaştırır. Bazı veri kalıpları bulunamıyor. SQL Engine’in birden çok yeniden başlatılmasını veya yeniden başlatılmasını gerektiren bir sorunla karşılaşırsanız, bunu her yaptığınızda SQL yeni bir Error Log dosyası oluşturur. Yalnızca altı tanesini tutacak şekilde ayarladığınız için, en eskisi silinir ve araştırma veya sorun giderme amacıyla ihtiyaç duyduğumuz dosyaları hızlı bir şekilde silebilir.Nasıl düzeltilir?
Çözüm, ERRORLOG’u düzenli olarak geri dönüştürmek ve tutulan dosya sayısını artırmaktır.99 SQL hata günlüğü dosyası tutacak şekilde ayarlayın.
- Management Studio’yu (SSMS) açın.
- Örneği genişletin, ardından Management’a gidin, SQL Server Logs’a sağ tıklayın ve Configure kısmını seçin.
3.Geri dönüştürülmeden önce hata günlüğü dosyalarının sayısını sınırla öğesini etkinleştirin ve ardından maksimum hata günlüğü dosyası sayısı için bir değer girin.
ErrorLog’u geri dönüştürmek için bir SQL Aracısı işi oluşturun
Hata Günlüğünü her 24 saatte bir veya 7 günde bir, her gün/hafta yeni dosyanın oluşturulacağı şekilde döndürün (en iyi uygulamalar bunu haftalık olarak yapmanızı önerir). SQL Server Agent JOB örneği oluşturmak için aşağıdaki betiği kullanabilirsiniz.- Bir İş adı ‘_Maint – SQL Hata Günlüğü Döngüsü’ yaratacaktır. Değiştirmek istiyorsanız @Job_name değişkenini değiştirin.
- Komut dosyası, gece çalışacak bir program oluşturacaktır (Her Pazartesi saat 12:00’de). sp_add_jobschedule için parametreleri değiştirebilir ve başka bir tarihe programlayabilirsiniz.
USE [msdb] GO BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]’ AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N’JOB’, @type=N’LOCAL’, @name=N'[Uncategorized (Local)]’ IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N’_Maint – SQL Error Log Cycle’, @enabled=1, @notify_level_eventlog=0, @notify_level_email=0, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N’Cycle SQL Error Log (daily), so files don”t grow too large.’, @category_name=N'[Uncategorized (Local)]’, @owner_login_name=N’sa’, @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N’Cycle SQLError log’, @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N’TSQL’, @command=N’EXEC sp_cycle_errorlog;’, @database_name=N’master’, @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback DECLARE @mydate varchar(8) SELECT @mydate = CONVERT(varchar(20), getdate(), 112) EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N’Run nightly’, @enabled=1, @freq_type=8, @freq_interval=2, @freq_recurrence_factor=1, @freq_subday_type=1, @freq_subday_interval=0, @freq_relative_interval=0, @active_start_date=@mydate, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959–, @schedule_uid=N’ec6602b8-b42f-4ada-a9f5-5a72424206dc’ IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)’ IF (@@ERROR <> 0 OR @ReturnCode <>; 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!
İletişime geçerek hemen destek alabilirsiniz.
İletişim