Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Noções básicas de automação de tarefas do SQL Server


Este é um artigo introdutório sobre automação no SQL Server focado principalmente nos conceitos básicos. Discutiremos algumas práticas padrão e alguns exemplos para ajudar os iniciantes a começar a automatizar o SQL Server.

Este artigo também destaca a importância de automatizar as tarefas do SQL Server para economizar tempo e esforço necessários para realizar essas tarefas manualmente.

Além disso, examinaremos os casos em que não é uma boa ideia automatizar as tarefas do SQL Server, apesar de a automação economizar tempo e esforço.

Sobre a automação do SQL Server


Vamos primeiro nos familiarizar com o termo ‘automação’ e o que exatamente é a automação de tarefas do SQL Server.

O que é automação?


Automação é um termo amplo que abrange uma ampla gama de coisas, mas geralmente significa ferramentas e dispositivos de programação que permitem executar um conjunto de tarefas automaticamente com pouca ou nenhuma intervenção humana.

O que é automação do SQL Server?


A automação do SQL Server também pode ter vários significados, mas geralmente se preocupa em automatizar as tarefas administrativas do SQL Server para economizar tempo e esforço.

Os administradores de banco de dados ou equipes de infraestrutura responsáveis ​​pelo gerenciamento do SQL Server e do(s) banco(s) de dados hospedado(s) geralmente gastam muito tempo executando tarefas de manutenção de banco de dados que podem ser automatizadas por meio de métodos diferentes e agendadas para execução em intervalos especificados.

Neste artigo, estamos focados principalmente na automação das tarefas de administração do SQL Server.

Quando você deve automatizar tarefas SQL


A automatização de uma tarefa administrativa do SQL Server requer um planejamento cuidadoso antes de sua implementação. Qualquer tarefa administrativa SQL, como backup, manutenção de banco de dados ou monitoramento de banco de dados, deve ser automatizada de maneira ideal se servir ao propósito sem causar nenhum outro problema.

Quando você não deve automatizar tarefas SQL


Apesar da automação ser muito útil na maioria dos casos, ainda existem algumas tarefas que deveriam ser melhor executadas manualmente.

Por exemplo, se uma tarefa de administração de banco de dados leva 5 minutos para ser concluída e automatizar essa tarefa requer 15 horas de escrita e teste de scripts de automação, então é mais eficaz fazer essa tarefa manualmente.bacsql

Existem certas tarefas que não devem ser automatizadas. Por exemplo, geralmente faz parte do trabalho de um DBA verificar as alterações do banco de dados antes de implantá-lo em um servidor ativo. Isso é feito para garantir que as alterações sejam compatíveis com o banco de dados de destino. Automatizar esta tarefa tem mais riscos do que benefícios, então é melhor deixar como está.

De um modo geral, se alguma tarefa de banco de dados exigir intervenção manual (ou seja, deve ser vista ou gerenciada por uma pessoa/equipe para passar para a próxima etapa/etapa) de acordo com as regras e regulamentos da sua empresa, automatizar totalmente essa tarefa é não é viável a menos que seja aprovado pela alta administração da sua empresa.

Exemplos de automação SQL


Vejamos agora alguns exemplos de automação SQL.

Cenário de backup do banco de dados (perspectiva do DBA)


Os administradores de banco de dados (DBAs) cuidam dos bancos de dados corporativos e suas tarefas diárias incluem atender a solicitações relacionadas ao banco de dados e gerenciar o servidor de banco de dados.

Um DBA passa a maior parte do tempo gerenciando e implantando pequenas alterações nos bancos de dados e cuidando do servidor de banco de dados.

Um DBA precisa realizar as seguintes tarefas consistentes:
  1. Crie um backup diário do banco de dados ao final de cada dia útil
  2. Crie um backup semanal no final de cada semana
  3. Crie um backup mensal no final de cada mês.

Um backup diário leva meia hora e é a última coisa que um DBA faz ao sair para o dia. Embora eles possam realizar várias tarefas após o início do processo de backup diário, eles ainda precisam ficar de olho em como isso garantirá que o backup seja concluído. Isso ocorre porque o backup deve ser armazenado no disco de backup quando estiver pronto.

Mesmo se ignorarmos o tempo gasto em backups semanais e mensais, o tempo necessário para concluir o backup diário aumentará à medida que você realizar esse processo, pois o banco de dados terá cada vez mais dados. Mesmo que leve meia hora para executar um backup diário no início, esse tempo pode aumentar para aproximadamente uma hora em algumas semanas ou meses, dependendo do crescimento dos dados no sistema de banco de dados.

Esta é uma tarefa imutável que deve ser repetida constantemente, por isso é possível que um DBA fique entediado ou perca a concentração e cometa erros ou perca um ou dois dias.

Se um DBA automatizar essa tarefa SQL, eles não apenas economizarão tempo e esforço. As chances de cometer um erro serão minimizadas.

O processo de backup diário pode ser agendado para iniciar durante a noite, quando há pouca interação com o banco de dados. No dia seguinte, o DBA pode verificar o backup e utilizar a última hora do dia útil (que antes era usada para o processo de backup) para tarefas mais importantes e urgentes.

Cenário de desenvolvimento e implantação de banco de dados


Vamos considerar um exemplo muito comum de desenvolvimento e implantação de banco de dados (estou excluindo deliberadamente o teste para permanecer no escopo deste artigo). Um desenvolvedor de banco de dados usa uma ferramenta de desenvolvimento de banco de dados como SQL Server Data Tools (SSDT) ​​para adicionar novas tabelas a um banco de dados. Feito isso, eles salvam as alterações no projeto de banco de dados SQL. Essas alterações são então enviadas ao DBA ou à equipe de infraestrutura que precisa revisar essas alterações e implantá-las no servidor ativo.

Os pontos importantes são os seguintes:
  1. Os desenvolvedores de banco de dados não devem publicar suas alterações de banco de dados diretamente no servidor ativo de acordo com as práticas padrão
  2. Os administradores de banco de dados ou a equipe de infraestrutura que gerencia o servidor ativo não podem publicar nenhuma alteração no banco de dados ativo antes de revisar essas alterações para garantir que não desafiem a consistência do banco de dados.

Como você pode entender pelo que discutimos, automatizar completamente as tarefas de desenvolvimento e implantação do banco de dados não é prático e apresenta muitos riscos de segurança.

Portanto, a melhor decisão seria automatizar as etapas que dependem de um DBA ou de uma equipe de infraestrutura.

Tarefas de manutenção do índice do banco de dados


Os índices de banco de dados desempenham um papel vital na recuperação do conjunto de resultados (linhas) mais rapidamente do(s) banco(s) de dados. Esses índices, no entanto, requerem manutenção com o tempo. A manutenção do índice do banco de dados pode ser feita manualmente fora do horário de pico ou automatizada. Pode ser uma tarefa muito demorada, por isso é melhor automatizar essa tarefa, especialmente quando há tantas outras coisas relacionadas ao servidor de banco de dados para gerenciar.

No entanto, alguns dos especialistas argumentam com esse ponto de vista e recomendam limitar até certo ponto a manutenção do índice para ficar de olho no processo ou até mesmo fazer isso de forma totalmente manual.

Quando se trata de manutenção de índice, as seguintes coisas podem melhorar o desempenho do índice do banco de dados:
  1. Reconstruir índice
  2. Reorganizar índice
  3. Índice de desfragmentação
  4. Atualizar estatísticas

Como automatizar tarefas SQL


Vejamos agora os requisitos básicos para automatizar uma Tarefa SQL seguido por um exemplo muito simples.

Configurar banco de dados de amostra


Este passo a passo requer o seguinte banco de dados de amostra de tabela única chamado UniversityV6 a configurar da seguinte forma:
-- (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

Execute o script para criar o banco de dados de amostra:


Iniciando o SQL Server Agent


Automatizar uma tarefa SQL geralmente depende de um agente SQL Server, a menos que você decida escolher uma rota alternativa.

A primeira coisa que você precisa é certificar-se de que um SQL Server Agent está em execução. Se não estiver em execução, você deve iniciá-lo manualmente e mantê-lo em execução.

Conecte-se a uma instância do SQL Server e procure o nó do SQL Server Agent no Pesquisador de Objetos. Se houver um ícone vermelho de 'parar' exibido neste nó, ele ainda não foi iniciado:



Clique com o botão direito do mouse no Agente do SQL Server nó e clique em Iniciar:



Em seguida, você precisa confirmar que deseja iniciar um serviço de agente do SQL Server em seu servidor. Clique em Sim para fazer isso:



Uma vez iniciado, o SQL Server Agent terá um pequeno ícone verde exibido próximo a ele. Você também pode expandir o nó agora:


Criar um novo trabalho


Clique com o botão direito do mouse em Trabalhos pasta e clique em Novo trabalho… :



Digite “Tarefa automatizada do Backup UniversityV6 ” e clique em Passos na barra de navegação do lado esquerdo:


Adicionar uma nova etapa de trabalho


Em seguida, clique em Novo , digite “Backup UniversityV6” como o nome da etapa, adicione o seguinte script SQL e clique em OK :
-- 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



Clique em OK para terminar de configurar o trabalho.

Visualizar o trabalho criado


Role para baixo até o SQL Server Agent e localize o trabalho recém-criado:


Teste de execução do trabalho (tarefa automatizada)


Clique com o botão direito do mouse em Fazer backup da tarefa automatizada do UniversityV6 e clique em Iniciar trabalho na etapa…:



O trabalho começará e terminará:


Verifique o local de backup


Agora, vá para o local em que esta tarefa automatizada criou um novo backup:



Parabéns! Você automatizou com sucesso a tarefa de criar um backup de banco de dados. Agora você pode armazená-lo em qualquer unidade de backup simplesmente alterando o nome da letra da unidade.

Lembre-se de que você deve sempre salvar um backup em uma unidade de backup diferente da unidade do sistema C:. Você pode agendar esta tarefa para ser executada em intervalos frequentes clicando com o botão direito do mouse no trabalho, clicando em P propriedades e clicando em Programações :


Coisas para fazer


Agora que você pode automatizar tarefas básicas de backup de banco de dados, tente o seguinte para melhorar suas habilidades:
  1. Agende esta tarefa para ser executada todos os dias à tarde por uma semana como teste
  2. Crie uma nova tabela chamada Estatísticas no banco de dados de amostra com as seguintes colunas:
    1. StatID (INT)
    2. StatDate (DATETIME2)
    3. TotalRows (INT)

Agora teste-se criando uma tarefa automatizada (novo trabalho) de registro da contagem de linhas para o Aluno tabela junto com a data/hora nas Estatísticas tabela. Tente preencher a tabela Aluno com frequência.

Agende a tarefa para ser executada a cada hora e verifique se as Estatísticas table reflete suas inserções de dados mostrando a contagem de linhas da tabela a cada hora.