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

Menggunakan Peringatan dan Operator di SQL Server

Pengantar

Dengan semua kemajuan dalam SQL Server dan data, rasanya luar biasa bahwa alat SQL asli seperti Peringatan dan Operator masih tersedia. Mereka adalah fitur utama Agen Server SQL yang terkait dengan apa pun dalam otomatisasi SQL Server.

Peran mereka jelas:

  • Peringatan, ketika dikonfigurasi, memberi tahu administrator basis data ketika peristiwa tertentu telah terjadi.
  • Operator adalah objek yang didefinisikan dalam SQL Server yang memetakan siapa saja atau grup yang dapat menerima pemberitahuan saat peristiwa ini terjadi.

Jenis Acara

SQL Server mencatat peristiwa ke Log Aplikasi Windows – kita dapat mengaksesnya melalui Windows Event Viewer di tingkat Sistem Operasi. SQL Server Agent dapat membaca Log Aplikasi dan mengaktifkan peringatan ketika ada kecocokan antara 2 kategori hal:1) peristiwa yang direkam dalam log aplikasi 2) peringatan yang ditentukan oleh administrator.

Ada tiga jenis acara utama:

  • Acara SQL Server
  • Kondisi kinerja SQL Server
  • Acara WMI

Membuat Acara SQL Server

Kami mulai membuat tanda SQL Server Agent dengan mengklik kanan pada node Alerts di objek explorer di bawah SQL Server Agent. Ini membuka jendela yang ditunjukkan pada Gambar. 2 di mana Anda menentukan nama peringatan, jenisnya (Peringatan Peristiwa SQL Server dalam kasus ini), cakupan basis data, dan kondisi peringatan.

Cara paling sederhana untuk menentukan suatu kondisi adalah dengan menggunakan tingkat keparahan. Dan untuk mendapatkan daftar lengkap pesan kesalahan di SQL Server, Anda perlu menanyakan sys.messages. Perhatikan bahwa tampilan ini berisi 309408 baris, jadi menggunakan filter adalah ide yang bagus – itulah mengapa dalam kueri saya, saya memfilter untuk bahasa Inggris melalui perintah.


Gbr. 1. Simpul Peringatan

-- Daftar 1:Pesan Kesalahan SQL Servermenggunakan msdbgoSELECT * FROM sys.messages di mana language_id=1033urutkan berdasarkan tingkat keparahan;

Gambar 2. Membuat Peringatan Peristiwa SQL Server

Perhatikan, bahwa saya juga dapat menggunakan pesan kesalahan tertentu untuk memicu peringatan. Seperti disebutkan sebelumnya, semua pesan galat terdaftar di sys.messages tampilan katalog SQL Server. Pada layar Gbr. 2, saya hanya memilih kondisi peristiwa – halaman respons memungkinkan saya untuk memilih apa yang terjadi jika peristiwa ini ditangkap. Seperti yang Anda lihat, saya dapat memilih untuk mengotomatiskan respons saya dengan menjalankan tugas atau hanya memberi tahu operator. Kami akan mengeksplorasi menjalankan pekerjaan nanti tetapi, untuk saat ini, mari kita amati mengapa Operator diharuskan untuk melanjutkan dengan opsi alternatif. Kami akan membuat operator di jendela yang sama, tetapi Jika kami memiliki operator yang ada, kami dapat memilihnya dari daftar.

Gambar 3. Memilih Tanggapan

Gambar 4. Mendefinisikan Operator

Gbr. 5. Memilih Saluran Lansiran

Pada Gambar 5, kami memilih Email sebagai media pengiriman notifikasi. Anda harus mengonfigurasi Database Mail dengan benar, jika tidak, peringatan yang dihasilkan akan tetap berada dalam antrian. Pada halaman ketiga jendela New Alert, kita dapat memilih apakah pesan kesalahan disertakan dalam pemberitahuan email dan apakah kita ingin mengirim pesan tambahan (misalnya, instruksi ke Junior DBA tentang tindakan lebih lanjut). Kami juga menentukan interval antara peringatan yang diaktifkan. Ini penting karena jika Anda membiarkannya di default (0), kotak surat operator akan penuh dengan peringatan dalam waktu singkat.


Gbr .6. Mengonfigurasi Opsi

-- Daftar 2:Membuat Peringatan SQL Server Menggunakan sp_add_alertUSE [msdb]GOEXEC msdb.dbo.sp_add_alert @name=N'Alert_Insufficient_Resources_017',@message_id=0,@severity=17,@enabled=1,@delay_between_responses_between 900,@include_event_description_in=1,@job_id=N'00000000-0000-0000-0000-000000000000'GOEXEC msdb.dbo.sp_add_notification @alert_name=N'Alert_Insufficient_Resources_017', @operator_name=N'DatabaseAdmin', @notification pra> 

Daftar 2 menunjukkan kode yang setara untuk menerapkan peringatan ini. Setelah kami menyelesaikan proses dengan mengklik OK, kami akan dapat melihat peringatan dan operator di node SQL Server Agent di Object Explorer.

Gambar 7. Peringatan Dibuat

Membuat Peringatan Kondisi Kinerja SQL Server

Kami juga dapat pergi ke rute alternatif dan membuat peringatan kondisi kinerja. Sebagai contoh kita pilih Databases> Percent Log Used Counter. Kami memberi tahu SQL Server untuk membuat peristiwa ketika Penggunaan File Log melebihi 75%. Dalam hal ini, kami memilih 'untuk menjalankan pekerjaan' sebagai respons. Daftar 3 menunjukkan tugas utama yang dilakukan oleh pekerjaan ini dan Daftar 4 menunjukkan definisi lengkap dari pekerjaan tersebut.

Gambar 8. Peringatan Kondisi Kinerja

-- Daftar 3:Pesan Kesalahan SQL ServerBACKUP LOG [DB1] TO DISK =N'E:\MSSQL\Backup\DBTransactionLog.bak'WITH RETAINDAYS =90, NOFORMAT, NOINIT, NAME =N'DB1-TransactionLog Backup' ,SKIP, NOREWIND, NOUNLOAD, STATS =10GOUSE [DB1]GODBCC SHRINKFILE (N'DB1_log' , 0, TRUNCATEONLY)GO-- Listing 4:Definisi Lengkap dari SQL Agent Backup JobUSE [msdb]GO/****** Object :Pekerjaan [DB1_BackupTransactionLog] Tanggal Skrip:27/11/2019 19:20:22 ******/BEGIN TRANSACTIONDECLARE @ReturnCode INTSELECT @ReturnCode =0/****** Obyek:JobCategory [[Tidak Berkategori (Lokal )]] Tanggal Skrip:27/11/2019 19:20:23 PM ******/JIKA TIDAK ADA (PILIH nama FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class =1)BEGINEXEC @ReturnCode =msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Tidak Dikategorikan (Lokal)]'IF (@@ERROR <> 0 ATAU @ ReturnCode <> 0) GOTO QuitWithRollbackENDDECLARE @jobId BINARY(16)EXEC @ReturnCode =msdb.dbo.sp_add_job @job_name=N'DB1_BackupTransactionLog',@enabled=1, @notify_level_eventlog=0,@notify_level_email=3,@notify_level_netsend=0,@notify_level_page=0,@delete_level=0,@description=N'Cadangkan Log Transaksi untuk DB1 ketika penggunaan Log Transaksi melebihi 75%',@category_name=N' [Tidak Berkategori (Lokal)]',@owner_login_name=N'DESKTOP-CT8K40N\kenne',@notify_email_operator_name=N'DatabaseAdmin', @job_id =@jobId OUTPUTIF (@@ERROR <> 0 ATAU @ReturnCode <> 0) GOTO QuitWithRollback /****** Objek:Langkah [Backup_Transaction_Log] Tanggal Skrip:27/11/2019 19:20:23 PM ******/EXEC @ReturnCode =msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'Backup_Transaction_Log',@step_id=1,@cmdexec_success_code=0,@on_success_action=3,@on_success_step_id=0,@on_fail_action=2,@on_fail_step_id=0,@retry_attempts=2,15_prior@os_interval==0, @subsystem=N'TSQL',@command=N'-- Listing 3:Pesan Kesalahan SQL ServerBACKUP LOG [DB1] TO DISK =N''E:\MSSQL\Backup\DBTransactionLog.bak''WITH RETAINDAYS =90, NOFORMAT, NOINIT, NAMA =N''DB1-TransactionLog Backup'',SKIP, NOREWIN D, NOUNLOAD, STATS =10GO',@database_name=N'master',@flags=0IF (@@ERROR <> 0 ATAU @ReturnCode <> 0) GOTO QuitWithRollback/****** Objek:Langkah [DB1_Shrink_Transaction_Log_File] Tanggal Skrip:27/11/2019 19:20:23 PM ******/EXEC @ReturnCode =msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'DB1_Shrink_Transaction_Log_File',@step_id=2, @cmdexec_success_code=0,@on_success_action=1,@on_success_step_id=0,@on_fail_action=2,@on_fail_step_id=0,@retry_attempts=2,@retry_interval=15,@os_run_priority=0, @subsistem=N'TSQL',@commandSQL' =N'USE [DB1]GODBCC SHRINKFILE (N''DB1_log'' , 0, TRUNCATEONLY)GO',@database_name=N'master',@flags=0IF (@@ERROR <> 0 ATAU @ReturnCode <> 0) GOTO QuitWithRollbackEXEC @ReturnCode =msdb.dbo.sp_update_job @job_id =@jobId, @start_step_id =1IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollbackEXEC @ReturnCode =msdb.dbo.sp_add_job @server_name =N'(local)'IF (@@ERROR <> 0 ATAU @ReturnCode <> 0) GOTO QuitWithRollbackCOMMIT TRANSACTIONGOTO EndSaveQui tWithRollback:IF (@@TRANCOUNT> 0) ROLLBACK TRANSACTIONEndSave:GO

Gbr. 9. Buat Job ke Yang Dieksekusi

Karena tanggapan kami, dalam hal ini, adalah pelaksanaan pekerjaan, kami juga menyertakan pemberitahuan dalam pekerjaan itu sendiri. Setelah kita selesai dengan pembuatan pekerjaan, kita dapat meninjau properti peringatan di Object Explorer. Kita bisa cek di History Page berapa kali kejadian itu terjadi.

Gambar 10. Opsi untuk Peringatan

Gambar 11. Halaman Riwayat Peringatan

Kesimpulan

Dalam artikel ini, kami telah menjelajahi pembuatan lansiran dan operator. Anda dapat memanfaatkan kemampuan hebat ini di SQL Server dan mengatur lingkungan Anda untuk memantau peristiwa dasar tanpa membeli alat pihak ketiga. Kemungkinan menggunakan pekerjaan untuk memperbaiki masalah kecil membantu kami mencapai manajemen proaktif lingkungan SQL Server kami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih pernyataan untuk mengembalikan induk dan anak tak terbatas

  2. Kriteria Filter SQL dalam kriteria bergabung atau klausa mana yang lebih efisien

  3. DELETE Massal di SQL Server 2008 (Apakah ada yang seperti Bulk Copy (bcp) untuk menghapus data?)

  4. Cara Membuat Batasan Cek pada Kolom Tunggal di SQL Server - Tutorial SQL Server / TSQL Part 83

  5. Karakter Non-Angka yang Mengembalikan Positif saat menggunakan ISNUMERIC() di SQL Server