Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menavigasi Log Kesalahan SQL Server

Pengantar

Salah satu keterampilan utama yang Anda butuhkan sebagai administrator basis data atau orang TI umumnya adalah kemampuan untuk memantau sistem dengan sangat hati-hati. Kurangnya keterampilan kunci ini dapat menyebabkan kesalahan diagnosis saat memecahkan masalah. SQL Server memperlihatkan sejumlah alat yang dapat membantu DBA dalam memecahkan masalah yang terjadi dalam produksi. SQL Server Error Log dan SQL Server Agent Log adalah dua fasilitas terpenting untuk memecahkan masalah SQL Server. Dalam artikel ini, kita akan mengeksplorasi cara kita dapat memanipulasi log Server dan Agen.

Perilaku Default

Secara default, SQL Server menyimpan enam Log Kesalahan terakhir dan sembilan log Agen terakhir dalam instance. Secara default, file log baru dibuat setiap kali instance agen dimulai ulang. Jumlah file log yang disimpan dapat dimodifikasi untuk log SQL Server menggunakan pernyataan GUI yang setara di bawah ini (Gbr. 1). Untuk membuka GUI ini di Object Explorer, klik kanan Manajemen , pilih Log Kesalahan SQL Server dan klik Konfigurasikan .

Gambar 1. Enam Log Kesalahan Terakhir

Setiap file log dibuat saat restart dan disimpan secara fisik di C: \Program Files\ Microsoft SQL Server\MSSQL14.\MSSQL\Log bersama dengan file jejak dan file dump. Log Kesalahan SQL Server diberi nama ERRORLOG.x (di mana x adalah angka) sedangkan Log Agen SQL diberi nama SQLAGENT.x.

Selama startup instance, mesin menulis informasi kunci ke log Kesalahan yang akan mencakup:

Detail Versi SQL Server Produsen Sistem

  • ID Proses SQL Server
  • Nomor Port sedang digunakan
  • Mode Otentikasi
  • Parameter Startup Registri
  • Akun Layanan
  • Ukuran CPU dan Memori terdeteksi
  • Status opsi Kunci mis. Halaman Besar, Ekstensi Buffer Pool, OLTP Dalam Memori, dll.

Informasi ini bisa sangat berguna ketika Anda hanya ingin cepat mengetahui salah satu dari mereka dari contoh yang diperkenalkan kepada Anda.

Mengonfigurasi Opsi Log Kesalahan

Seperti disebutkan sebelumnya, aspek-aspek tertentu dari Log Kesalahan SQL dan log Agen dapat dikonfigurasi. Di lingkungan saya, kami menyetel NumErrorLogs ke 30 karena kami ingin menyimpan log selama tiga puluh hari terakhir setiap hari. Kami memastikan bahwa setiap file log berisi data hari dengan menjalankan sp_cycle_errorlog (dan sp_cycle_agent_errorlog) pada tengah malam menggunakan Pekerjaan Agen. Daftar 3 menunjukkan rincian pekerjaan ini. Prosedur tersimpan ini juga bisa sangat berguna untuk secara eksplisit memutar log kesalahan saat Anda ingin mereproduksi masalah dan melihatnya terungkap (yaitu sebelum mengeskalasi ke SQL Profiler atau Extended Events).

-- Listing 1: Configure NumErrorLogs
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'NumErrorLogs', REG_DWORD, 30 GO

Gambar 2. Mengatur Jumlah Maksimum File Log Kesalahan

Log Kesalahan Agen SQL dapat dikonfigurasi ke beberapa tingkat detail dengan mengklik kanan Agen SQL Server , lalu Log Kesalahan dan pilih Konfigurasikan dari menu. Daftar 2 dan Gambar 2 menunjukkan cara memodifikasi tingkat pencatatan.

-- Listing 2: Setting Error Logging Level
USE [msdb]
GO
EXEC msdb dbo.sp_set_sqlagent_properties @errorlogging_level 7 GO

Gambar 3. Mengatur Opsi Log Kesalahan Agen SQL

-- Listing 3
/* Create Job to Cycle Server and Agent Error Logs */
USE [msdb]
GO
/****** Object: Job [Cycle Error Logs] Script Date: 01/25/2015 15:40:34 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 01/25/2015 15:40:34 ******/
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'Custom_Cycle_Error_Logs',
@enabled 1
@notify_level_eventlog 0,
@notify_level_email 0,
@notify_level_netsend 0
@notify_level_page 0
@delete_level 0,
@description=N'No description available.',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name N'COMPANYDOMAIN\kigiri', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback /****** Object: Step [Step 1] Script Date: 01/25/2015 15:40:35 ******/
EXEC @ReturnCode = msdb dbo sp_add_jobstep @job_id @jobId, @step_name N'Step 1',
@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 master.sys.sp_cycle_errorlog GO
EXEC msdb.dbo.sp_cycle_agent_errorlog
GO',
@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
EXEC @ReturnCode = msdb dbo sp_add_jobschedule @job_id @jobId @name N'Daily Schedule', @enabled 1 @freq_type 4,
@freq_interval 1 @freq_subday_type 1 @freq_subday_interval 0 @freq_relative_interval 0 @freq_recurrence_factor 0 @active_start_date 20121208,
@active_end_date 99991231 @active_start_time 0 @active_end_time 235959
[email protected]_uid=N'f3eb3e85-9875-4cf5-a789-8c558b772d27'
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
/* Change Maximum Number of Error Log Files to 30 */
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'NumErrorLogs', REG_DWORD, 30 GO
/* Set jo history length and agent properties */
EXEC msdb dbo.sp_purge_jobhistory @oldest_date '2015-11-28T19:29:00'
GO
USE [msdb]
GO
EXEC msdb dbo.sp_set_sqlagent_properties @jobhistory_max_rows 10000, @jobhistory_max_rows_per_job 1000
GO

“Menuang” Melalui Log

Membiasakan diri dengan log kesalahan berguna untuk mengidentifikasi hal-hal seperti item yang terdaftar di bagian kedua atau memantau kejadian seperti pemulihan database besar. Tetapi ketika mencari item tertentu seperti kegagalan login atau kesalahan serupa yang tersembunyi di lautan log, Anda mungkin ingin menggunakan filter atau cari kemampuan.

Gambar 4. Filter dan Cari

penelusuran akan berguna saat mencari nomor atau teks kesalahan tertentu. Pencarian mengembalikan kemunculan item yang dibutuhkan oleh baris pada suatu waktu. Saat Anda perlu mempersempit log kesalahan menggunakan kriteria tertentu, gunakan filter. Anda dapat memfilter menurut koneksi , tanggal atau umum detail.

Gambar 5. Kriteria Pencarian

Gambar 6. Kriteria Filter

Saat Instance Gagal

Satu pertanyaan bagus yang akan ditanyakan oleh pembaca yang tajam adalah apa yang terjadi ketika SQL Server gagal memulai? Bagaimana kita memeriksa log? Nah, kebetulan selain fakta bahwa log kesalahan ditulis ke file datar jalur yang telah ditentukan sebelumnya, Anda juga dapat melihat log Server dan Agen di Windows Event Viewer. Yang perlu Anda lakukan adalah memfilter Log Aplikasi Peraga Peristiwa untuk peristiwa dengan sumber MSSQLSERVER. Di lingkungan yang lebih maju, log SQL Server, seperti Log Windows lainnya, dapat disimpan di alat pihak ketiga seperti SEIM atau Splunk. Ini membuat segalanya jadi lebih mudah. Dimulai dengan SQL Server 2012, juga dimungkinkan untuk melihat log kesalahan offline dari instance lain seluruhnya, menggunakan server terdaftar serta menggunakan WMI dan WQL.

Gambar 7. Melihat Log SQL Server di Peraga Peristiwa

Kesimpulan

Log Kesalahan SQL Server dapat dianggap sebagai titik awal untuk memecahkan masalah kesalahan umum. Log lain, seperti file jejak yang dihasilkan oleh SQL Trace atau ditangkap oleh SQL Profiler atau Extended Events Session memberikan lebih banyak detail tentang apa yang terjadi di dalam mesin. Ada juga log khusus seperti yang terkait dengan Database Mail atau Replication. Meskipun ini semua sangat berguna untuk memecahkan masalah di SQL Server, saya akan merekomendasikan Log Kesalahan SQL Server sebagai titik awal yang bagus.

Referensi

Melihat Log Kesalahan SQL Server

Melihat File Log Offline

Log kesalahan siklus sp

Log kesalahan agen siklus sp

Jalur Instalasi Default SQL Server


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menghubungkan ke Beberapa Server SQL dalam Satu Klik (Grup Server Terdaftar) - Tutorial SQL Server / TSQL Bagian 5

  2. Ikhtisar Kompresi Data di SQL Server

  3. SQL Server APAPUN Operator Dijelaskan

  4. Bagaimana cara mengambil catatan selama 30 menit terakhir di MS SQL?

  5. SQL Server Internal:Operator Bermasalah Pt. III – Mengurutkan