domingo, 10 de mayo de 2020

Alertas y Operadores en SQL Server

Buenos días queridos lectores en este día de las madres de cuarentena, hoy les quiero mostrar la utilidad y el uso de los operadores y de las alertas en SQL SERVER.

Un operador define información de contacto para las personas responsables del mantenimiento de una o varias instancias de SQL SERVER. La responsabilidad de operador puede recaer en una sola persona o en varias. Un operador no contiene información de seguridad y tampoco contiene seguridad en si mismo.

Una alerta es una respuesta automática a un evento específico . Un evento puede ser el inicio de un trabajo (JOB) o que los recursos del sistema alcancen un umbral específico. Se deben configurar las condiciones en las que se genera una alerta.



Una alerta puede responder a las siguientes condiciones:

  • SQL SERVER Eventos
  • SQL SERVER condiciones de rendimiento
  • Eventos del Instrumental de administración de Windows (WMI) en el equipo en el que se ejecuta el Agente SQL Server.
Una alerta puede realizar las siguientes acciones:
  • Notificar a uno o varios operadores
  • Ejecución de un trabajo.
Pero vamos a pasar a la práctica que es lo que nos gusta y como aprendemos.

Para configurar una alerta con su operador, debemos considerar lo siguiente:
  • Que la característica del correo electrónico este activada y configurada. Si no saben configurar el correo en SQL SERVER, les dejo el enlace donde se puede realizar aquí: Configurar correo en SQL SERVER
  • Que el Agente SQL este habilitado y en Ejecución
  • Que no se utilice la versión Express.
Aclarado lo anterior vamos a configurar las alertas y los operadores.

Ejemplo 1: Configurar un operador con el nombre DBA y crear una alerta que avise al operador de un intento erróneo de logueo.

Hay dos maneras de hacerlo
  • Entorno gráfico
  • Transact SQL
Nosotros lo haremos de las dos formas.

Crear operador

Para crear un operador dentro por entorno gráfico realizaremos los siguientes pasos:
  1. Expandir el Agente SQL
  2. Expandir la carpeta Operadores, podemos observar que no hay ninguno.
  3. Clic en el botón derecho del mouse en la Opción "New Operator"
  4. Capturar el nombre del Agente, así como su correo electrónico, y podremos también especificar los horarios en los que ese agente se encontrará disponible, fuera de esos horarios no recibirá las alertas.
  5. En el menú Notificaciones, seleccionamos las alertas que queremos que se notifiquen al operador que estamos creando, no hay ninguna alerta configurada, por lo cual, aparecerá vacío.
  6. Dar clic en OK, para configurar el Operador.
Ahora veremos como crear el operador mediante Transact SQL, sería bueno que eliminaran el operador, para volverlo a crear ahora mediante código.

Para crear el operador mediante Transact SQL utilizaremos el sp de sistema sp_add_operator, que recibe varios parámetros, pero nos enfocaremos de momento en éstos:

USE [msdb]

GO
EXEC msdb.dbo.sp_add_operator @name=N'DBA', --Nombre del operador
             @enabled=1, --Estará Habilitado
             @pager_days=0, -- Ningún día marcado, quiere decir que estará siempre disponible
             @email_address=N'leur0985@gmail.com' --Dirección de correo a la que se enviará la alerta
GO

Una vez ejecutada esta sentencia tendremos creado el operador y seguiremos con la configuración de la alerta.

Crear alerta

Para crear una alerta mediante entorno gráfico, realizaremos los siguientes pasos:

  1. Expandir el AgenteSQL Server
  2. Expandir la carpeta Alerts, podemos observar que no hay ninguna
  3. Clic en el botón derecho del mouse en la opción "New Alert"
  4. Capturar el nombre de la Alerta
  5. Capturar el Tipo de Alerta, en este caso queremos un Evento de alerta SQL
  6. Especificamos sobre que base de datos aplicará la alerta, puede ser en una en particular o en todas. 
  7. Configuraremos la alerta, por número de error o por severidad, en este caso será por severidad, y elegiremos el 014, más adelante les explicaré porque, en el caso del login erróneo, utilizaremos el 014
  8. En el menú de Response, configuraremos si queremos que al detectase el evento, se ejecute un job, se notifique al operador o ambos, en este caso marcaremos únicamente que notifique al operador DBA, y lo haga por correo.
  9. En el menú de Options configuraremos incluir mensaje de error en el texto
  10. Agregaremos un texto personalizado al correo para esa alerta
  11. Dar clic en el botón OK para dar de alta la alerta
Crear alerta mediante Transact SQL

USE [msdb]
GO
EXEC msdb.dbo.sp_add_alert @name=N'Alerta de Prueba', --Nombre de la alerta
             @message_id=0, --Mensaje de error queda deshabilitado
             @severity=14, --Severidad 014
             @enabled=1, --Alerta habilitada
             @delay_between_responses=0, --No tendra un retraso al enciar la alerta
             @include_event_description_in=1,  --Incluir mensaje del error en el correo
             @notification_message=N'Alguien colocó de manera errónea el login de usuario', --Mensaje personalizado
             @job_id=N'00000000-0000-0000-0000-000000000000' --No se ejecutará ningun JOB
GO
EXEC msdb.dbo.sp_add_notification @alert_name=N'Alerta de Prueba', @operator_name=N'DBA', @notification_method = 1
--Agregamos esa alerta al operador DBA
GO

Ahora falta un último paso y es configurar el Agente para envío de alertas y lo realizaremos con los siguientes pasos.

  1. Dar clic en el Agente SQL con el botón derecho del mouse
  2. Dar clic en la opción Propiedades
  3. Habilitaremos el perfil de correo, y especificamos cual será el perfil que utilizaremos para el envío de alertas
  4. Dar clic en el botón OK, para configurar el envío de alertas del Agente SQL.
Para realizar la configuración del envío de alertas del Agente SQL desde Transact utilizaremos el sp de sistema sp_set_sqlagent_properties.

USE [msdb]
GO
EXEC msdb.dbo.sp_set_sqlagent_properties @email_save_in_sent_folder=1,
             @databasemail_profile=N'Correo Outllok' --Perfil del correo que utilizaremos
GO

Ahora, realizaremos la prueba de la alerta y de manera intencional, pondremos un login erróneo y veremos es error que muestra.



Daremos clic en el botón Show details para obtener información más detallada del error
¿Recuerdan el severity 14?, pues ahí está el porque pusimos el 014, ahora verificaremos nuestro correo y nos daremos cuenta de un correo como éste:

Como ven, tenemos una alerta en nuestro correo, el cual le estará notificando al operador DBA.

Hasta aquí el post queridos lectores, si tienen alguna duda espero pregunten, comenten o den clic en algún anuncio que les interese.

Saludos

No hay comentarios.:

Publicar un comentario

Auditoria en SQL SERVER

 Buenas tardes queridos lectores, el día de hoy les traigo la manera de realizar una auditoria en SQL SERVER, imaginemos que hay datos que s...