Questo è un articolo introduttivo sull'automazione in SQL Server incentrato principalmente sui concetti di base. Discuteremo alcune pratiche standard e alcuni esempi per aiutare i principianti a iniziare con l'automazione del server SQL.
Questo articolo sottolinea anche l'importanza di automatizzare le attività del server SQL per risparmiare tempo e fatica necessari per eseguire queste attività manualmente.
Inoltre, esamineremo i casi in cui non è una buona idea automatizzare le attività del server SQL nonostante il fatto che l'automazione faccia risparmiare tempo e fatica.
Informazioni sull'automazione di SQL Server
Per prima cosa acquisiamo familiarità con il termine "automazione" e che cos'è esattamente l'automazione delle attività del server SQL.
Cos'è l'automazione?
Automazione è un termine ampio che copre un'ampia gamma di cose, ma in genere significa strumenti e dispositivi di programmazione che consentono di eseguire una serie di attività automaticamente con un intervento umano minimo o nullo.
Che cos'è l'automazione di SQL Server?
L'automazione di SQL Server può anche avere diversi significati, ma riguarda più comunemente l'automazione delle attività amministrative di SQL Server al fine di risparmiare tempo e fatica.
Gli amministratori di database o i team dell'infrastruttura responsabili della gestione di SQL Server e dei database ospitati spesso dedicano molto tempo all'esecuzione di attività di manutenzione del database che potrebbero essere automatizzate con metodi diversi e pianificate per l'esecuzione a intervalli specifici.
In questo articolo, ci concentriamo principalmente sull'automazione delle attività di amministrazione di SQL Server.
Quando dovresti automatizzare le attività SQL
L'automazione di un'attività amministrativa di SQL Server richiede un'attenta pianificazione prima dell'implementazione. Qualsiasi attività amministrativa SQL come il backup, la manutenzione del database o il monitoraggio del database dovrebbe essere idealmente automatizzata se serve allo scopo senza causare altri problemi.
Quando non dovresti automatizzare le attività SQL
Nonostante l'automazione sia molto utile nella maggior parte dei casi, ci sono ancora alcune attività che dovrebbero essere eseguite meglio manualmente.
Ad esempio, se un'attività di amministrazione del database richiede 5 minuti per essere completata e l'automazione di tale attività richiede 15 ore di scrittura e test degli script di automazione, è più efficace eseguire questa attività manualmente.bacsql
Ci sono alcune attività che non devono essere automatizzate. Ad esempio, spesso fa parte del lavoro di un DBA controllare le modifiche al database prima di distribuirlo su un server live. Questo viene fatto per garantire che le modifiche siano compatibili con il database di destinazione. L'automazione di questa attività comporta più rischi che vantaggi, quindi è meglio lasciarla così com'è.
In generale, se un'attività del database richiede un intervento manuale (ovvero deve essere vista o gestita da una persona/team per passare alla fase/fase successiva) in base alle regole e ai regolamenti della tua azienda, è necessario automatizzare completamente tale attività non fattibile a meno che non sia approvato dal top management della tua azienda.
Esempi di automazione SQL
Diamo ora un'occhiata a un paio di esempi di automazione SQL.
Scenario di backup del database (prospettiva DBA)
Gli amministratori di database (DBA) si occupano dei database aziendali e le loro attività quotidiane includono la gestione delle richieste relative al database e la gestione del server di database.
Un DBA trascorre la maggior parte del tempo a gestire e distribuire piccole modifiche ai database e a prendersi cura del server di database.
Un DBA deve svolgere le seguenti attività coerenti:
- Crea un backup giornaliero del database alla fine di ogni giornata lavorativa
- Crea un backup settimanale alla fine di ogni settimana
- Crea un backup mensile alla fine di ogni mese.
Un backup giornaliero richiede mezz'ora ed è l'ultima cosa che un DBA fa quando parte per la giornata. Sebbene possano svolgere più attività una volta avviato il processo di backup giornaliero, devono comunque tenere d'occhio il modo in cui garantirà che il backup sia terminato. Questo perché il backup dovrebbe essere archiviato sul disco di backup quando è pronto.
Anche se ignoriamo il tempo dedicato ai backup settimanali e mensili, il tempo necessario per completare il backup giornaliero aumenterà più eseguirai questo processo perché il database avrà sempre più dati. Anche se all'inizio è necessaria mezz'ora per eseguire un backup giornaliero, questa quantità di tempo può aumentare fino a circa un'ora in un paio di settimane o mesi a seconda della crescita dei dati nel sistema di database.
Questo è un compito immutabile che deve essere ripetuto costantemente, quindi è possibile che un DBA si annoi o perda la concentrazione e commetta errori o perda un giorno o due.
Se un DBA automatizza questa attività SQL, non solo farà risparmiare tempo e fatica. Le possibilità di sbagliare saranno ridotte al minimo.
Il processo di backup giornaliero può essere programmato per l'avvio durante le ore notturne quando l'interazione con il database è ridotta. Il giorno successivo, il DBA può controllare il backup e utilizzare l'ultima ora della giornata lavorativa (che era precedentemente utilizzata per il processo di backup) per attività più importanti e urgenti.
Sviluppo del database e scenario di implementazione
Consideriamo un esempio molto comune di sviluppo e distribuzione di database (escludo deliberatamente i test per rimanere nell'ambito di questo articolo). Uno sviluppatore di database utilizza uno strumento di sviluppo di database come SQL Server Data Tools (SSDT) per aggiungere nuove tabelle a un database. Una volta fatto, salvano le modifiche nel progetto del database SQL. Queste modifiche vengono quindi inviate al DBA o al team dell'infrastruttura che deve rivedere queste modifiche e distribuirle al server live.
I punti importanti sono i seguenti:
- Gli sviluppatori di database non dovrebbero pubblicare le modifiche al database direttamente sul server live come da prassi standard
- Gli amministratori del database o il team dell'infrastruttura che gestisce il server live non possono pubblicare alcuna modifica al database live prima di aver esaminato queste modifiche per assicurarsi che non mettano in discussione la coerenza del database.
Come puoi capire da quanto abbiamo discusso, automatizzare completamente le attività di sviluppo e distribuzione del database non è pratico e comporta molti rischi per la sicurezza.
Quindi la decisione migliore sarebbe automatizzare i passaggi che dipendono da un DBA o da un team dell'infrastruttura.
Attività di manutenzione dell'indice del database
Gli indici del database svolgono un ruolo fondamentale nel recuperare più rapidamente il set di risultati (righe) dai database. Questi indici, tuttavia, richiedono una manutenzione nel tempo. La manutenzione dell'indice del database può essere eseguita manualmente durante le ore non di punta o automatizzata. Può essere un'attività che richiede molto tempo, quindi è meglio automatizzare questa attività soprattutto quando ci sono così tante altre cose da gestire relative al server di database.
Tuttavia, alcuni esperti discutono con questo punto di vista e raccomandano di limitare in una certa misura la manutenzione dell'indice per tenere d'occhio il processo o addirittura di farlo completamente manualmente.
Quando si tratta di manutenzione dell'indice, le seguenti cose possono migliorare le prestazioni dell'indice del database:
- Ricostruisci indice
- Riorganizza l'indice
- Deframmenta indice
- Aggiorna le statistiche
Come automatizzare le attività SQL
Diamo ora un'occhiata ai requisiti di base per automatizzare un'attività SQL seguiti da un esempio molto semplice.
Imposta database di esempio
Questa procedura dettagliata richiede il seguente database di esempio a tabella singola denominato UniversityV6 da impostare come segue:
-- (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
Esegui lo script per creare il database di esempio:
Avvio di SQL Server Agent
L'automazione di un'attività SQL di solito dipende da un agente SQL Server, a meno che tu non decida di scegliere un percorso alternativo.
La prima cosa di cui hai bisogno è assicurarti che un agente SQL Server sia in esecuzione. Se non è in esecuzione, devi avviarlo manualmente e mantenerlo in esecuzione.
Connettiti a un'istanza di SQL Server e cerca il nodo di SQL Server Agent in Esplora oggetti. Se è presente un'icona rossa "stop" visualizzata su questo nodo, non è ancora stato avviato:
Fai clic con il pulsante destro del mouse su Agente SQL Server nodo e fai clic su Avvia:
Successivamente, devi confermare che desideri avviare un servizio dell'agente di SQL Server sul tuo server. Fai clic su Sì per fare questo:
Una volta avviato, SQL Server Agent avrà accanto una piccola icona verde. Puoi anche espandere il nodo ora:
Crea un nuovo lavoro
Fai clic con il pulsante destro del mouse su Offerte di lavoro cartella e fai clic su Nuovo lavoro... :
Digita "Backup dell'attività automatizzata UniversityV6 " e fai clic su Passaggi sulla barra di navigazione a sinistra:
Aggiungi un nuovo passaggio di lavoro
Quindi, fai clic su Nuovo , digita "Backup UniversityV6" come nome del passaggio, aggiungi il seguente script SQL e fai clic su 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
Fai clic su OK per completare la configurazione del lavoro.
Visualizza il lavoro creato
Scorri verso il basso fino a SQL Server Agent e individua il processo appena creato:
Esegui test del lavoro (attività automatizzata)
Fare clic con il pulsante destro del mouse su Esegui il backup dell'attività automatizzata di UniversityV6 e fai clic su Avvia lavoro al passaggio...:
Il lavoro inizierà e finirà:
Controlla la posizione di backup
Ora vai alla posizione in cui questa attività automatizzata ha creato un nuovo backup:
Congratulazioni! Hai automatizzato con successo l'attività di creazione di un backup del database. Ora puoi archiviare qualsiasi unità di backup semplicemente cambiando il nome della lettera di unità.
Ricorda che dovresti sempre salvare un backup su un'unità di backup diversa dall'unità di sistema C:. È possibile pianificare l'esecuzione di questa attività a intervalli frequenti facendo clic con il pulsante destro del mouse sul lavoro, quindi facendo clic su P proprietà , quindi fai clic su Programmi :
Cose da fare
Ora che puoi automatizzare le attività di backup del database di base, prova quanto segue per migliorare le tue abilità:
- Programma l'esecuzione di questa attività ogni giorno nel pomeriggio per una settimana come prova
- Crea una nuova tabella chiamata Stats nel database di esempio con le seguenti colonne:
- StatID (INT)
- Data Stat (DATETIME2)
- TotalRows (INT)
Ora mettiti alla prova creando un'attività automatizzata (nuovo lavoro) per registrare il conteggio delle righe per lo Studente tabella insieme alla data/ora nelle Statistiche tavolo. Prova a popolare frequentemente la tabella Studente.
Pianifica l'esecuzione dell'attività ogni ora e controlla se le Statistiche la tabella riflette i tuoi inserimenti di dati mostrandoti il conteggio delle righe della tabella ogni ora.