SQL Server ERRORLOG İçin Best practices

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.

  1. Management Studio’yu (SSMS) açın.
  2. Ö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.

  1. 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.
  2. 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

[vc_row full_width=”stretch_row” css=”.vc_custom_1505794887127{background-color: #2596be !important;}” gradient_animation=”#ffbc63,#d46b02″][vc_column][stm_cta button_color=”custom” button_custom_color=”#0077c2″ icon_custom_color=”#ffffff” button_icon_pos=”right” button_icon=”stmicon-chevron-right” style=”style_6″ link=”url:aryasoft.com.tr/contacts |title:İletişim”] Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz! [/stm_cta][/vc_column][/vc_row][vc_row css=”.vc_custom_1501845139892{margin-top: 50px !important;margin-bottom: 25px !important;}”][/vc_row]