sql >> Base de Datos >  >> RDS >> Sqlserver

Conceptos básicos de la automatización de tareas de SQL Server

Este es un artículo introductorio sobre la automatización en el servidor SQL centrado principalmente en los conceptos básicos. Discutiremos algunas prácticas estándar y algunos ejemplos para ayudar a los principiantes a comenzar con la automatización del servidor SQL.

Este artículo también destaca la importancia de automatizar las tareas del servidor SQL para ahorrar el tiempo y el esfuerzo necesarios para realizar estas tareas manualmente.

Además, veremos casos en los que no es una buena idea automatizar las tareas del servidor SQL a pesar de que la automatización ahorra tiempo y esfuerzo.

Acerca de la automatización de SQL Server

Primero, familiaricémonos con el término "automatización" y qué es exactamente la automatización de tareas del servidor SQL.

¿Qué es la automatización?

La automatización es un término amplio que cubre una amplia gama de cosas, pero generalmente significa herramientas y dispositivos de programación que permiten realizar un conjunto de tareas automáticamente con poca o ninguna intervención humana.

¿Qué es la automatización de SQL Server?

La automatización de SQL Server también puede tener varios significados, pero se refiere más comúnmente a la automatización de las tareas administrativas de SQL Server para ahorrar tiempo y esfuerzo.

Los administradores de bases de datos o los equipos de infraestructura responsables de la administración de SQL Server y las bases de datos alojadas a menudo pasan mucho tiempo realizando tareas de mantenimiento de bases de datos que podrían automatizarse a través de diferentes métodos y programarse para ejecutarse a intervalos específicos.

En este artículo, nos centramos principalmente en la automatización de las tareas de administración de SQL Server.

Cuándo debe automatizar las tareas de SQL

La automatización de una tarea administrativa de SQL Server requiere una planificación cuidadosa antes de implementarla. Cualquier tarea administrativa de SQL, como la copia de seguridad, el mantenimiento de la base de datos o la supervisión de la base de datos, debería automatizarse idealmente si cumple el propósito sin causar ningún otro problema.

Cuándo no debe automatizar tareas de SQL

A pesar de que la automatización es muy útil en la mayoría de los casos, todavía hay algunas tareas que deberían realizarse mejor manualmente.

Por ejemplo, si una tarea de administración de base de datos tarda 5 minutos en completarse y la automatización de esa tarea requiere 15 horas de escritura y prueba de scripts de automatización, entonces es más efectivo realizar esta tarea manualmente.bacsql

Hay ciertas tareas que no deben ser automatizadas. Por ejemplo, a menudo es parte del trabajo de un DBA verificar los cambios en la base de datos antes de implementarla en un servidor en vivo. Esto se hace para garantizar que los cambios sean compatibles con la base de datos de destino. Automatizar esta tarea tiene más riesgos que beneficios, por lo que es mejor dejarlo como está.

En términos generales, si alguna tarea de la base de datos requiere intervención manual (es decir, debe ser vista o administrada por una persona/equipo para pasar al siguiente paso/etapa) de acuerdo con las reglas y regulaciones de su empresa, entonces es necesario automatizar completamente esa tarea. no es factible a menos que sea aprobado por la alta dirección de su empresa.

Ejemplos de Automatización SQL

Veamos ahora un par de ejemplos de automatización de SQL.

Escenario de respaldo de base de datos (perspectiva DBA)

Los administradores de bases de datos (DBA) se encargan de las bases de datos corporativas y sus tareas diarias incluyen atender las solicitudes relacionadas con la base de datos y administrar el servidor de la base de datos.

Un DBA pasa la mayor parte de su tiempo administrando e implementando pequeños cambios en las bases de datos y ocupándose del servidor de la base de datos.

Un DBA tiene que hacer las siguientes tareas consistentes:

  1. Cree una copia de seguridad diaria de la base de datos al final de cada día laboral
  2. Cree una copia de seguridad semanal al final de cada semana
  3. Cree una copia de seguridad mensual al final de cada mes.

Una copia de seguridad diaria toma media hora y es lo último que hace un DBA cuando se va por el día. Aunque pueden realizar múltiples tareas una vez que se inicia el proceso de copia de seguridad diario, aún deben estar atentos a cómo se asegurará de que la copia de seguridad finalice. Esto se debe a que la copia de seguridad debe almacenarse en el disco de copia de seguridad cuando esté lista.

Incluso si ignoramos el tiempo dedicado a las copias de seguridad semanales y mensuales, el tiempo requerido para completar la copia de seguridad diaria aumentará cuanto más realice este proceso porque la base de datos tendrá más y más datos. Incluso si se tarda media hora en realizar una copia de seguridad diaria al principio, esta cantidad de tiempo puede aumentar a aproximadamente una hora en un par de semanas o meses, según el crecimiento de los datos en el sistema de la base de datos.

Esta es una tarea constante que debe repetirse constantemente, por lo que es posible que un DBA se aburra o pierda la concentración y cometa errores o pierda uno o dos días.

Si un DBA automatiza esta tarea de SQL, no solo ahorrará tiempo y esfuerzo. Las posibilidades de cometer un error se minimizarán.

El proceso de respaldo diario se puede programar para que comience durante la noche cuando hay poca interacción con la base de datos. Al día siguiente, el DBA puede verificar la copia de seguridad y utilizar la última hora de la jornada laboral (que se utilizó anteriormente para el proceso de copia de seguridad) para tareas más importantes y urgentes.

Escenario de desarrollo e implementación de bases de datos

Consideremos un ejemplo muy común de desarrollo e implementación de bases de datos (excluyo deliberadamente las pruebas para mantenerme dentro del alcance de este artículo). Un desarrollador de bases de datos utiliza una herramienta de desarrollo de bases de datos como SQL Server Data Tools (SSDT) ​​para agregar nuevas tablas a una base de datos. Una vez hecho esto, guardan los cambios en el proyecto de la base de datos SQL. Estos cambios luego se envían al DBA o al equipo de infraestructura que tiene que revisar estos cambios e implementarlos en el servidor en vivo.

Los puntos importantes son los siguientes:

  1. Los desarrolladores de bases de datos no deben publicar sus cambios en la base de datos directamente en el servidor en vivo según las prácticas estándar
  2. Los administradores de la base de datos o el equipo de infraestructura que administra el servidor en vivo no pueden publicar ningún cambio en la base de datos en vivo antes de revisar estos cambios para asegurarse de que no desafíen la consistencia de la base de datos.

Como puede comprender por lo que discutimos, la automatización completa de las tareas de desarrollo e implementación de la base de datos no es práctica y presenta muchos riesgos de seguridad.

Entonces, la mejor decisión sería automatizar los pasos que dependen de un DBA o un equipo de infraestructura.

Tareas de mantenimiento del índice de la base de datos

Los índices de la base de datos juegan un papel vital en la recuperación más rápida del conjunto de resultados (filas) de la(s) base(s) de datos. Estos índices, sin embargo, requieren mantenimiento con el tiempo. El mantenimiento del índice de la base de datos se puede realizar manualmente durante las horas de menor actividad o de forma automática. Puede ser una tarea que consume mucho tiempo, por lo que es mejor automatizar esta tarea, especialmente cuando hay muchas otras cosas relacionadas con el servidor de bases de datos que administrar.

Sin embargo, algunos de los expertos discuten con este punto de vista y recomiendan limitar el mantenimiento del índice hasta cierto punto para controlar el proceso o incluso hacerlo de forma totalmente manual.

Cuando se trata del mantenimiento del índice, las siguientes cosas pueden mejorar el rendimiento del índice de la base de datos:

  1. Reconstruir índice
  2. Reorganizar índice
  3. Índice de desfragmentación
  4. Actualizar estadísticas

Cómo automatizar tareas SQL

Veamos ahora los requisitos básicos para automatizar una tarea SQL seguido de un ejemplo muy simple.

Configurar base de datos de muestra

Este tutorial requiere la siguiente base de datos de muestra de una sola tabla llamada UniversityV6 configurarse de la siguiente manera:

-- (1) Create the UniversityV6 sample database
CREATE DATABASE UniversityV6;
GO

USE UniversityV6

CREATE TABLE [dbo].[Student] (
    [StudentId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]      VARCHAR (30)  NULL,
    [Course]    VARCHAR (30)  NULL,
    [Marks]     INT           NULL,
    [ExamDate]  DATETIME2 (7) NULL,
    CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC)
);
GO

Ejecute el script para crear la base de datos de muestra:

Inicio del Agente SQL Server

La automatización de una tarea de SQL generalmente depende de un agente de SQL Server, a menos que decida elegir una ruta alternativa.

Lo primero que necesita es asegurarse de que se esté ejecutando un Agente SQL Server. Si no se está ejecutando, debe iniciarlo manualmente y mantenerlo en ejecución.

Conéctese a una instancia de SQL Server y busque el nodo del Agente SQL Server en el Explorador de objetos. Si se muestra un icono rojo de "detener" en este nodo, aún no se ha iniciado:

Haga clic derecho en el Agente SQL Server nodo y haga clic en Iniciar:

A continuación, debe confirmar que desea iniciar un servicio de agente de SQL Server en su servidor. Haga clic en para hacer esto:

Una vez iniciado, el Agente SQL Server tendrá un pequeño icono verde junto a él. También puede expandir el nodo ahora:

Crear un nuevo trabajo

Haga clic con el botón derecho en Empleos carpeta y haga clic en Nuevo trabajo… :

Escriba "Tarea automatizada Backup UniversityV6 ” y haga clic en Pasos en la barra de navegación del lado izquierdo:

Agregar un nuevo paso de trabajo

A continuación, haga clic en Nuevo , escriba "Backup UniversityV6" como nombre del paso, agregue el siguiente script SQL y haga clic en Aceptar :

-- Backup the UniversityV6 sample database using the date time stamp
DECLARE @BackupName VARCHAR(100)
SET @BackupName=CONCAT('C:\Backup\UniversityV6-',FORMAT(GETDATE(),'yyyy-MM-dd-hh-mm-tt'),'.bak')
BACKUP DATABASE UniversityV6 TO [email protected] WITH COMPRESSION, INIT;
GO

Haga clic en Aceptar para terminar de configurar el trabajo.

Ver el trabajo creado

Desplácese hacia abajo hasta el Agente SQL Server y busque el trabajo recién creado:

Prueba de ejecución del trabajo (tarea automatizada)

Haga clic con el botón derecho en Tarea automatizada Backup UniversityV6 y haga clic en Iniciar trabajo en el paso...:

El trabajo comenzará y terminará:

Verifique la ubicación de la copia de seguridad

Ahora, vaya a la ubicación en la que esta tarea automatizada creó una nueva copia de seguridad:

¡Felicidades! Ha automatizado con éxito la tarea de crear una copia de seguridad de la base de datos. Ahora puede almacenarlo en cualquier unidad de copia de seguridad simplemente cambiando el nombre de la letra de la unidad.

Recuerde que siempre debe guardar una copia de seguridad en una unidad de copia de seguridad que no sea la unidad del sistema C:. Puede programar esta tarea para que se ejecute a intervalos frecuentes haciendo clic con el botón derecho en el trabajo, haciendo clic en P propiedades y luego haciendo clic en Horarios :

Cosas que hacer

Ahora que puede automatizar las tareas básicas de respaldo de la base de datos, intente lo siguiente para mejorar sus habilidades:

  1. Programe esta tarea para que se ejecute todos los días por la tarde durante una semana como prueba
  2. Cree una nueva tabla llamada Estadísticas en la base de datos de muestra con las siguientes columnas:
    1. Estadística (INT)
    2. FechaEstadística (DATETIME2)
    3. Filas totales (INT)

Ahora pruébese creando una tarea automatizada (nuevo trabajo) para registrar el recuento de filas para el Estudiante tabla junto con la fecha/hora en las Estadísticas mesa. Trate de llenar la tabla de Estudiantes con frecuencia.

Programe la tarea para que se ejecute cada hora y verifique si las Estadísticas table refleja sus inserciones de datos al mostrarle el recuento de filas de la tabla cada hora.