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

Peringatan Agen SQL Server

Menjadi administrator database memiliki banyak tanggung jawab, dan mengetahui apa yang terjadi pada SQL Server Anda adalah salah satunya. Menjadi proaktif dan waspada terhadap kesalahan adalah salah satu sifat yang membuat seseorang menjadi DBA yang hebat. Dan saya tidak hanya berbicara tentang hal-hal yang gagal, itulah yang kebanyakan orang pikirkan tentang peringatan; Anda juga dapat diberitahu tentang masalah kinerja. Di dalam SQL Server, Anda memiliki kemampuan untuk membuat SQL Server Agent Alerts (yang akan saya sebut sebagai 'lansiran' mulai sekarang), dan ini dapat dilakukan dengan mudah menggunakan GUI atau T-SQL.

Mengonfigurasi Peringatan Agen SQL Server

Untuk menggunakan peringatan, Anda harus memiliki Database Mail dan SQL Agent Operator yang dikonfigurasi. Sebagian besar contoh SQL yang saya temui sudah memiliki Database Mail yang dikonfigurasi untuk pemberitahuan kegagalan pekerjaan. Jika Anda memerlukan informasi lebih lanjut tentang menyiapkan fitur ini, kunjungi topik Buku Daring, "Mengonfigurasi Surat Basis Data."

Tugas yang kurang dikenal adalah mengonfigurasi Operator. Anda dapat membuat Operator menggunakan SSMS atau T-SQL. Dalam SSMS perluas SQL Server Agent, klik kanan pada Operator dan pilih Operator Baru. Anda akan memiliki kotak dialog baru yang terbuka di mana Anda dapat memberi nama operator dan menentukan alamat email untuk diberitahukan. Saya lebih suka menggunakan grup distribusi untuk pemberitahuan email. Sebagian besar perusahaan memiliki lebih dari satu orang yang bertanggung jawab atas lingkungan SQL dan jika Anda menentukan grup distribusi, maka seluruh tim dapat diberi tahu tentang peringatan tersebut. Menggunakan grup distribusi juga mempermudah penambahan atau penghapusan orang dari lansiran.

Di bawah ini adalah contoh tangkapan layar dari dialog Operator Baru:

Saya lebih suka menggunakan T-SQL sehingga saya dapat memastikan bahwa membuat Operator adalah bagian dari templat pembuatan server. Contoh kode untuk membuat Operator di atas adalah sebagai berikut:

EXEC msdb.dbo.sp_add_operator @name = N'SQL_Alerts', 
  @enabled = 1, 
  @email_address = N'[email protected]';

Setelah Anda memiliki Database Mail dan Operator yang dikonfigurasi, Anda dapat membuat peringatan dan menetapkannya ke Operator.

Jika menggunakan SSMS, Anda dapat memperluas SQL Server Agent dan kemudian Alerts. Secara default, tidak ada peringatan yang dibuat. Jika Anda mengklik kanan dan memilih New Alert, Anda akan mendapatkan layar seperti gambar di bawah ini:

Anda akan melihat bahwa di bawah Keparahan, ada 25 kode keparahan. Sama seperti kedengarannya, tingkat keparahan kesalahan menggambarkan betapa pentingnya kesalahan itu. Tingkat keparahan 10 bersifat informasi sementara 19-25 berakibat fatal dan Anda ingin diberi tahu saat kesalahan tersebut muncul. Jika kesalahan tingkat keparahan 23 muncul, misalnya, kemungkinan besar Anda memiliki korupsi di salah satu database Anda. Semua kesalahan fatal ini dapat memengaruhi kinerja server Anda, yang pada gilirannya memengaruhi pengalaman pelanggan.

Ada peringatan tambahan yang perlu Anda buat, untuk kesalahan 825. Kesalahan 825, seperti yang dijelaskan Paul Randal dalam posting blognya, terkait dengan operasi I/O yang harus dicoba lagi oleh SQL Server tetapi akhirnya berhasil (sedangkan kesalahan 823 dan 824 menunjukkan bahwa operasi percobaan ulang I/O dicoba lagi dan akhirnya gagal). Kesalahan 825 sangat penting untuk diketahui karena memperingatkan Anda tentang masalah I/O yang bisa berakibat fatal di masa mendatang. Upaya coba ulang apa pun buruk, Anda tidak boleh menunggu hingga operasi I/O gagal diberi tahu. Jika Anda mulai mendapatkan pesan Kesalahan 825, Anda harus segera menghubungi tim penyimpanan dan perangkat keras Anda.

Anda dapat membuat setiap Peringatan dengan menentukan nama dan memilih tingkat keparahannya. Untuk Kesalahan 825 Anda akan memilih Kesalahan dan ketik nomornya. Seperti Operator, saya lebih suka menggunakan T-SQL. Jika saya dapat dengan mudah membuat skrip proses, maka akan lebih mudah untuk menggunakan kembali dan menyertakannya sebagai bagian dari pembuatan server.
Di bawah ini Anda akan menemukan skrip yang telah saya gunakan di workstation Pengembang SQL Server 2014 saya. Skrip ini membuat setiap peringatan dan menambahkan pemberitahuan untuk peringatan ke Operator SQL_Alerts.

EXEC msdb.dbo.sp_add_alert @name = N'Severity 19 Error', 
  @message_id = 0,   @severity = 19,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 19 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 20 Error', 
  @message_id = 0,   @severity = 20,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 20 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name=N'Severity 21 Error', 
  @message_id = 0,   @severity = 21,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 21 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 22 Error', 
  @message_id = 0,   @severity = 22,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 22 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 23 Error', 
  @message_id = 0,   @severity = 23,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 23 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 24 Error', 
  @message_id = 0,   @severity = 24,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 24 Error', 
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Severity 25 Error', 
  @message_id = 0,   @severity = 25,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 25 Error',
  @operator_name = N'SQL_Alerts', @notification_method = 1;
 
EXEC msdb.dbo.sp_add_alert @name = N'Error 825', 
  @message_id = 825,  @severity = 0,  @include_event_description_in = 0;
 
EXEC msdb.dbo.sp_add_notification @alert_name = N'Error 825',
  @operator_name = N'SQL_Alerts', @notification_method = 1;

Jika Anda telah mengikutinya, Anda akan memiliki email database yang dikonfigurasi, membuat Operator untuk mengirim email kepada Anda atau grup distribusi tentang potensi kesalahan, dan SQL Server Agent Alerts dikonfigurasi untuk Tingkat Keparahan 19 – 25 dan kesalahan 825.

Ini bagus. Setiap kali salah satu dari peringatan tersebut dipicu, email akan dikirim ke tim Anda. Selain lansiran acara, lansiran dapat dikonfigurasi untuk kondisi kinerja, seperti yang saya sebutkan di pendahuluan. Misalnya, jika penggunaan memori melebihi ambang batas yang ditentukan, peringatan dapat dipicu. Saya mendorong Anda untuk menjelajahi berbagai peringatan kinerja dan membuat yang dapat dimanfaatkan oleh organisasi Anda. Untuk menemukan peringatan kondisi kinerja SQL Server, di kotak dialog peringatan baru, klik kotak turun bawah untuk Tipe. Di sana Anda akan melihat peringatan kondisi kinerja SQL Server terdaftar. Setelah Anda memilih opsi itu, Anda dapat menelusuri jenis objek yang dapat Anda konfigurasikan peringatan kondisi kinerjanya.

Sementara kami menugaskan Operator ke respons peringatan, Anda juga dapat mengonfigurasi peringatan untuk menjalankan tugas Agen SQL. Meskipun ini memberi Anda beberapa fleksibilitas untuk memiliki tugas respons peristiwa, itu tidak memberikan kemampuan untuk memiliki peringatan bersyarat yang mudah.

Menggunakan SQL Sentry untuk Peringatan Tingkat Lanjut

Untuk peringatan lebih lanjut, Anda memerlukan alat yang lebih baik. Di sinilah SQL Sentry dapat membantu. Salah satu fitur peringatan SQL Sentry favorit saya adalah kemampuan untuk membuat kondisi khusus untuk memperingatkan atau bertindak ketika sesuatu telah berubah dalam lingkungan. Misalnya, jika seseorang mengubah nilai memori min atau maks, maxdop yang dimodifikasi atau ambang biaya untuk paralelisme, Anda bisa mendapatkan peringatan atau bahkan memulai proses. Fitur ini diperkenalkan di SQL Sentry v8, dan Greg Gonzalez (blog | @SQLsensei) menulis blog tentangnya di sini:"SQL Sentry v8:Intelligent Alerting Redefined."

Dengan fitur ini, Anda juga dapat membuat kondisi khusus untuk database yang berbeda dalam satu peringatan. Jika Anda mencoba ini menggunakan lansiran SQL Agent, Anda harus membuat lansiran yang berbeda per database.

Fitur peringatan hebat lainnya adalah kemampuan untuk membuat jadwal peringatan yang berbeda. Banyak organisasi memiliki tim yang bertanggung jawab di berbagai bagian hari. Beberapa mungkin memiliki tanggung jawab DBA produksi selama jam-jam siang hari dengan Pusat Operasi Jaringan yang mencakup shift malam, kemudian orang yang siap dihubungi selama akhir pekan. Bukankah lebih baik untuk dapat menyesuaikan jadwal peringatan untuk memberi tahu tim yang tepat selama jam tanggung jawab mereka?

Anda dapat membuat Alert Windows (seperti dalam jendela waktu) dan mengikatnya ke alert atau grup yang berbeda. Hal ini memungkinkan peringatan yang berbeda untuk aktif selama waktu yang berbeda dan untuk grup yang berbeda untuk diberitahukan pada waktu yang berbeda. Ini sangat keren karena memungkinkan peringatan Anda mengikuti jadwal dukungan sehingga orang yang tepat diberi tahu. Scott Fallen merinci fitur ini dalam posting blog, "Alerting on a Call Schedule with SQL Sentry," memandu Anda dalam membuat lansiran untuk berbagai tim panggilan.

Fitur peringatan lain dari Performance Advisor dan Event Manager adalah kemampuan untuk mengonfigurasi respons lain seperti menjalankan proses Windows, mencatat peristiwa ke database atau log kesalahan, mengirim jebakan SNMP ke alat pemantauan lain seperti SCOM, atau bahkan mematikan proses. . Pilihan Anda hampir tidak terbatas tentang apa yang telah Anda tetapkan sebelumnya terjadi ketika peristiwa tertentu terjadi. SQL Agent Alerts tidak dapat disesuaikan.

Ringkasan

Hal penting yang dapat diambil dari posting ini adalah Anda benar-benar harus waspada terhadap kesalahan dan kondisi kinerja. Jika Anda tidak memiliki alat seperti SQL Sentry, memanfaatkan SQL Agent Alerts masih merupakan awal yang baik.

Selama beberapa posting saya berikutnya, saya akan membahas beberapa peringatan yang memengaruhi kinerja ini dan mendiskusikan tindakan apa yang perlu Anda ambil ketika muncul.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa tahu kapan Populasi Indeks Teks Lengkap SQL selesai?

  2. Mendapatkan kesalahan aneh, kueri SQL Server menggunakan klausa `DENGAN`

  3. Cara Menampilkan Kolasi Database di SQL Server (T-SQL)

  4. Bagaimana cara saya terhubung ke database SQL Server 2008 menggunakan JDBC?

  5. Bagaimana Anda menerapkan urutan di Microsoft SQL Server?