¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. SQL Server 2016
  3. Tareas planificadas
Extrait - SQL Server 2016 Aprender a administrar una base de datos transaccional con SQL Server Management Studio
Extractos del libro
SQL Server 2016 Aprender a administrar una base de datos transaccional con SQL Server Management Studio Volver a la página de compra del libro

Tareas planificadas

Introducción

SQL Server ofrece la posibilidad de automatizar las tareas administrativas. Por supuesto, no es posible automatizar todas las tareas, pero las tareas planificadas son un buen complemento a la optimización que SQL Server hace por defecto. Además, con estas tareas predefinidas, el administrador tiene un rol de anticipador, lo que le da más posibilidades para salir adelante de la mejor manera posible, tanto en términos de rendimiento como de fiabilidad.

La gestión de tareas planificadas, las alertas y las operaciones son servicios gestionados por el agente SQL Server. Este servicio debe iniciarse para que todos estos elementos sean administrados. El agente SQL Server trabaja con el Observador de eventos para gestionar los errores de SQL Server, con el Monitor de rendimiento para gestionar las alertas relativas a las condiciones de rendimiento y con la base de datos MSDB para averiguar la respuesta que hay que aplicar ante una alerta o las tareas planificadas que hay que ejecutar.

images/05ec189.png

Principio de funcionamiento

Cuando se produce una alerta, el agente puede reaccionar de dos maneras diferentes; ejecutando un trabajo determinado o previniendo a un operador para que esté al corriente del problema que acaba de aparecer. Obviamente, la ejecución de una tarea puede conducir a la activación de nuevas tareas y así sucesivamente.

Otras tareas planificadas van a ejecutarse por medio del servicio SQL Server...

Configuración de los servicios

Como la ejecución automática de trabajos administrativos se apoya en el servicio SQL Server Agent, es importante que este último esté correctamente configurado.

La configuración del servicio MSSQL se ha tratado durante la instalación.

Excepcionalmente, es posible iniciar este servicio como una aplicación con sqlagent90.exe.

Esta aplicación en línea de comandos tiene las tres opciones siguientes:

  • -c: para indicar si el agente SQL Server se ejecuta de manera independiente al servicio dedicado de Windows.

  • -v: para detallado, es decir, que el agente SQL Server se ejecuta en modo documentado y se muestra la información directamente en la ventana que sirve para iniciar la aplicación.

  • -i nombreInstancia: permite indicar sobre qué instancia de SQL Server queremos iniciar el agente SQL Server en modo línea de comandos.

1. Cuenta de inicio para SQL Server Agent

El servicio SQL Server Agent se ejecuta en el contexto de una cuenta de usuario. Esta cuenta puede ser Sistema Local, Servicio de Red o bien una cuenta de usuario (local o sobre un dominio). Los dos primeros casos corresponden a cuentas predefinidas que permiten hacer un determinado número de acciones. Si el servicio SQL Server Agent está preparado para acceder a los recursos disponibles en la red, es preferible que se ejecute en el contexto de una cuenta de usuario de domino. Durante la instalación en Windows 2008 R2 o una versión superior, es posible usar las cuentas virtuales o de servicios administrados (MSA), que se ajustan perfectamente a esta tarea. Esta opción se fija inicialmente durante la instalación, aunque es posible modificarla más adelante. En caso de utilizar una cuenta de usuario, no se asigna ningún privilegio directamente al usuario, sino que se crea el grupo SQLServer AgentUser$nombreOrdenador$MSSQLServer (para la instancia por defecto). A este grupo se le asignan los siguientes permisos:

  • Abrir una sesión como un servicio.

  • Abrir una sesión como un programa de tratamiento de lotes.

  • Sustituir una ficha a nivel de proceso.

  • Anular el control del recorrido.

  • Cambiar las cuotas de memoria de un proceso.

El hecho de pasar por un grupo simplifica la gestión de privilegios durante el cambio de la cuenta utilizada.

Es posible configurar este servicio para que se inicie de forma automática. Adicionalmente...

Los operadores

Un operador puede corresponder a una persona física o bien a una función de la empresa. En función del tamaño de la empresa, una misma persona física puede desempeñar la función de varios operadores, o bien un mismo operador puede corresponder a varias personas físicas.

Los operadores serán utilizados por el agente SQL Server para avisar del fin de la ejecución de un trabajo o del desencadenamiento de una alerta para informar de la gravedad de la situación.

Para establecer la comunicación con los operadores, el agente SQL Server dispone de tres canales de comunicación: el correo electrónico, la radiomensajería y el mensaje a través de la red (net send).

La entrega de un correo electrónico al operador pasa por el servicio de mensajería y es el servidor de mensajería el que se encarga de enviar el correo electrónico hasta su destinatario.

Para los mensajes de tipo radiomensajería, el agente SQL Server también se basa en el servicio de mensajería: es el servidor de correo electrónico el que se encarga de transmitir el mensaje al destinatario en función de la pasarela configurada en el servidor. El mensaje inicial proporcionado por el agente SQL Server deberá respetar las restricciones impuestas por esta pasarela.

Por último, los mensajes a través de la red, que corresponden...

Los trabajos

Es posible automatizar algunas tareas de administración repetitivas a través de trabajos y de la planificación de su ejecución. Por supuesto, también es posible lanzar manualmente su ejecución.

Los trabajos están formados por un conjunto de tareas. Al final de cada tarea se pueden presentar dos casos: o bien la tarea se ha ejecutado con éxito o bien ha habido un fallo.

El trabajo, que es un encadenamiento de tareas, debe definir todas las soluciones posibles para que pueda ejecutarse correctamente.

Todos los trabajos se almacenan en la tabla sysjobs de la base msdb.

1. Implantación

Las principales características de un trabajo son:

  • El nombre: debe ser único en el servidor y está limitado a 128 caracteres.

  • La categoría: permite organizar los trabajos en función de las operaciones que realizan. Existen, desde la instalación del servidor, categorías predefinidas, como búsqueda de texto completo, mantenimiento de la base de datos...

  • El propietario: este puede ser diferente del usuario que lo ha creado.

  • La descripción.

  • Las etapas del trabajo.

  • La planificación.

  • La notificación.

Cada trabajo puede estar asociado a una categoría. La agrupación por categoría permite una agrupación lógica de los diferentes trabajos y, por lo tanto, una presentación de mejor calidad en SQL Server Management Studio.

La creación de un trabajo solo es posible para un administrador del sistema (sysdamin) o bien para un usuario miembro de uno de los tres roles de base de datos asociados a SQL Server Agent.

La modificación y la eliminación de un trabajo solo las puede efectuar el propietario o un administrador del sistema.

La definición de un trabajo puede realizarla bien SQL Server Management Studio o bien el procedimiento almacenado sp_add_job.

images/541-newjob.png
images/541-newjobsql.png

En el momento de crear un trabajo, es necesario:

  • Verificar que el trabajo está habilitado.

  • Determinar el lugar...

Las alertas

Las alertas se definen con el objetivo de disparar un tratamiento automático para solucionar el problema o advertir a un operador, que será capaz de reaccionar rápidamente para resolver el problema.

1. Presentación

Cuando un servidor está funcionando, los errores, mensajes o eventos generados por SQL Server se registran en el Observador de eventos de Windows. El agente SQL Server lee el diario de Aplicación de eventos para buscar la información que puede tratar, comparándola con las alertas que han sido definidas en la tabla sysalerts de la base de datos msdb.

También se puede disparar una alerta cuando un contador de rendimiento supera un valor límite (fijo). Por último, una alerta puede dispararse tras un evento WMI (Windows Management Instrumentation) concreto. En este último caso, el agente SQL Server es un cliente del espacio de nombres WMI y en el momento de definir la alerta es necesario especificar el evento WMI que va a dispararla.

Las alertas asociadas a un error SQL Server son las más frecuentes.

a. ¿Cómo registrar la información en el diario de Aplicación?

Hay tres tipos de eventos que se pueden registrar en el Observador de eventos:

  • Los mensajes con nivel de gravedad superior a 19. Los mensajes se almacenan en la tabla sysmessages de la base Master. Para obligar a que se registre en el diario un mensaje cuando el nivel de gravedad es inferior a 19, es necesario ejecutar el procedimiento sp_altermessage.

  • Todas las instrucciones RAISERROR con la opción WITH LOG.

  • Todo evento registrado con xp_logevent.

El tamaño del diario de aplicación del Observador de eventos de Windows debe ser suficiente como para contener todos los mensajes.

b. ¿Cómo reacciona el agente SQL Server?

El agente SQL recorre el diario de Aplicación buscando mensajes que provengan de SQL Server. Entonces compara el error con las alertas definidas en la tabla sysalerts que está cargada en memoria caché para mejorar los rendimientos.

Esta alerta dispara la ejecución de una tarea planificada o la notificación al operador.

2. Gestión de las alertas

Cada alerta tiene un nombre único. Este nombre está limitado a 128 caracteres.

Solo los mensajes registrados en el Observador de eventos pueden disparar una alerta.

a. Como respuesta a errores de SQL Server

Para los errores...

Ejercicio: planificar tareas

1. Enunciado

Defina una tarea planificada DesactivarGuest en la base de datos LibroSSMS que se ejecutará todos los días de la semana (de lunes a viernes) a las 23 horas y cuya finalidad será desactivar la cuenta de invitado para impedir conexiones por usuarios no expresamente autorizados a trabajar en esta base de datos.

2. Solución

Después de verificar que el servicio SQL Server Agent está arrancado, debemos posicionarnos en la rama Jobs y elegir la opción New Job desde el menú contextual.

En la sección General, indicamos el nombre de la tarea y después nos situamos en la sección Steps. Llegados allí debemos crear una nueva etapa (botón New) y completarla como sigue:

images/562-tp1.png

En caso de duda sobre la sintaxis Transact SQL, el botón Parse permite asegurar que el script es sintácticamente correcto.

A continuación debemos situarnos en la sección Schedules para programar la ejecución de esta tarea de lunes a viernes a las 23 horas. La siguiente imagen ilustra esta planificación: 

images/562-tp2.png
.