![]() |
![]() | ![]() | ![]() | ![]() |
![]() | |||
Impostare un piano di manutenzione in Management Studio | |||
|
SQL Server nelle sue versioni a pagamento (quindi sulla Express no) mette a disposizione tramite Sql Server Management Studio (SSMS) lo strumento dei piani di manutenzione, che consentono di eseguire operazioni di manutenzione sui database SQL quali, ad esempio, il controllo integrità, l'aggiornamento delle statistiche, la ricostruzione/riorganizzazione degli indici e, eventualmente, i backup. Per i backup si consiglia comunque di effettuare processi di backup distinti, senza far uso dei piani di manutenzione. La procedura sottostante da indicazioni e consigli sui piani di manutenzione. Ma sono solo indicazioni! Le impostazioni potrebbero differire da cliente e cliente, in presenza di personalizzazioni e della versione di sql server in uso. Consigliamo quindi prima di applicare qualsiasi impostazione di interfacciarsi con il DBA del cliente (come anche per i backup dei database). Partiamo con una domanda: come sappiamo bene è fondamentale fare i backup dei database (obbligatorio), ma è altrettanto fondamentale impostare dei piani di manutenzione che eseguono operazioni di controllo integrità, aggiornamento statistiche e ricostruzione/riorganizzazione indici? E' molto più importante di quanto spesso si pensi! La risposta breve è i piani di manutenzione non sono obbligatori come i backup, ma sono comunque fondamentali per garantire performance, stabilità e prevenire corruzioni. Vediamo perché e con che priorità. Quanto sono fondamentali le varie attività di manutenzione? Di seguito una classificazione pratica basata su quanto siano realmente critiche. 1. CheckDB (controllo integrità database) — CRITICO al pari dei backup DBCC CHECKDB è assolutamente essenziale.
Perché è critico?
Best practice: eseguirlo almeno 1 volta a settimana (anche giornaliero se DB piccolo). 2. Aggiornamento statistiche — ESSENZIALE per le performance SQL Server aggiorna automaticamente le statistiche... ma non abbastanza e non sempre accuratamente. Statistiche obsolete ➝ pessimi piani di esecuzione ➝ query lente. Best practice classica:
3. Manutenzione indici — IMPORTANTE, ma meno critica dei primi due Riorganizzazione / ricostruzione indici è importante, ma non è "salvavita". Cosa comporta non farla?
Però:
Best practice moderna:
Quindi quali sono veramente fondamentali? Ordine di importanza reale (mantenuto da Microsoft e dalla community SQL):
Molti DBA fanno troppa manutenzione sugli indici e troppo poca su CheckDB e statistiche. Conclusione Sì, oltre ai backup è davvero fondamentale avere un piano di manutenzione, almeno con: Necessari
Molto consigliati
Dettaglio per la creazione di un piano di manutenzione da SSMS per effettuare il controllo integrità database Entrare in SQL Server Management Studio e nella cartella Gestione scegliere la voce di menu Creazione guidata piano di manutenzione
Premere Avanti
Nella pagina di Selezione delle proprietà del piano indicare un Nome del piano e scegliere Singola pianificazione per l'intero piano
Quindi si preme su Pianificazione, Cambia per impostare la frequenza del processo di pianificazione. Impostare l'esecuzione 1 volta a settimana (anche giornaliero se DB piccolo) in un orario dove non sono presenti altri lavori schedulati o altre attività interattive su Business e dopo il backup completo
Nella pagina Seleziona attività di manutenzione scegliere la voce come sottoindicato
Nella pagina Seleziona ordine attività di manutenzione confermare visto che stiamo eseguendo la sola attività di Controlla integrità database
Sulla pagina Definizione attività controlla integrità database selezionare i database di Business, nell'esempio selezioniamo solo PROVA, in caso se sull'istanza sql sono presenti solo database di Business potremmo anche usare l'opzione Tutti i database utente (esclusi master, model, msdb e tempdb) per coinvolgere nel controllo tutti i database presenti (attenzione però perché su sql potrebbero esserci anche altri database di altri software)
Ed impostare le impostazioni, ad esempio impostando il flag Solo struttura fisica (ci servirà per fare una considerazione più avanti)
Sulla pagina Selezione opzioni report selezionare il flag Scrivi report in un file di testo per conservare in un file di log l'esito del piano di manutenzione del database
Quindi si preme Fine sulla pagina di riepilogo
Premere Chiudi
A questo punto in gestione dovremmo vedere il piano di manutenzione appena creato
Se facciamo tasto destro e scegliamo modifica
Troveremo il dettaglio del piano della pianificazione, delle attività e delle impostazioni effettuate che in caso possiamo modificare. In particolare, se poi effettuiamo sempre con il tasto destro modifica sull'attività di controllo integrità database
Troviamo le configurazioni scelte in precedenza, tra cui la spunta sul flag Solo struttura fisica
Se guardiamo con il pulsante Visualizza T-SQL tale flag quando impostato aggiunge al comando DBCC CHECKDB il parametro WITH PHYSICAL ONLY
E' giusto mettere questo flag? Dipende sempre da cosa si vuole fare. Il parametro PHYSICAL_ONLY di DBCC CHECKDB serve a eseguire un controllo molto più veloce, limitato alla coerenza fisica delle pagine e delle strutture di basso livello del database, evitando tutte le verifiche logiche più lente. Il parametro non controlla:
Quindi non garantisce che i dati siano logicamente corretti, ma solo che non ci sia corruzione fisica.
DBCC CHECKDB(N'PROVA') PIANI DI MANUTENZIONE PROGRAMMATA DALLO STRUMENTO DI AMMINISTRAZIONE DI BUSINESS (busadmintools.exe) Dal tab Backup/Restore di Busadmintools è possibile richiamare, con il pulsante "Piani man. Program." l'accesso agli attuali piani di manutenzione inseriti da Business, per inserirli o eliminarli. La funzionalità replica parzialmente quanto già indicato qui sopra per la gestione dei piani di manutenzione da parte di SSMS, in particolare a:
In questa sezione, una volta selezionato il database interessato, sarà possibile avere una maschera di selezione delle attività, data\ora\periodicità della stessa, che verrà inserita nei piani di manutenzione dell'Agent di SQL Server
Proviamo quindi ad impostare un piano di manutenzione per effettuare il controllo integrità database da questo strumento come avevamo fato prima da SSMS. Dalla maschera in oggetto premere Nuovo
Poi impostiamo un nome al piano di manutenzione, selezioniamo di eseguire l'attività di controllo integrità database, i database da elaborare ed impostiamo una pianificazione
Una volta salvato uscirà il seguente messaggio
Premuto Ok troveremo nella lista il piano di manutenzione appena impostato
Piano di manutenzione che troviamo ovviamente anche in SSMS sotto a SQL Agent\Processi
Se andiamo a visualizzare le proprietà del processo in modifica
Troveremo il dettaglio del comando T-SQL che ha impostato Business (senza il parametro WITH PHYSICAL_ONLY) per un controllo completo
Dettaglio per la creazione di un piano di manutenzione da SSMS per effettuare l'aggiornamento statistiche In questo esempio impostiamo tramite piani di manutenzione di SSMS l'attività di aggiornamento statistiche, riportiamo solo una parte delle schermate (quelle che differiscono dalla precedente impostazione del controllo integrità database). Nella pagina di Selezione delle proprietà del piano indicare un Nome del piano e scegliere Singola pianificazione per l'intero piano
Nella pagina Seleziona attività di manutenzione scegliere la voce come sottoindicato
Nella pagina Seleziona ordine attività di manutenzione confermare visto che stiamo eseguendo la sola attività di Aggiorna statistiche
Sulla pagina Definizione attività Aggiorna statistiche selezionare i database di Business, nell'esempio selezioniamo solo PROVA, in caso se sull'istanza sql sono presenti solo database di Business potremmo anche usare l'opzione Tutti i database utente (esclusi master, model, msdb e tempdb) per coinvolgere nel controllo tutti i database presenti (attenzione però perché su sql potrebbero esserci anche altri database di altri software)
Sempre sulla pagina Definizione attività Aggiorna statistiche non modifichiamo in questo caso le altre opzioni presenti
Anche qui una volta confermato il piano lo troviamo in SSMS per eventuali modifiche
Dettaglio per la creazione di un piano di manutenzione da SSMS per effettuare la riorganizzazione e la ricompilazione degli indici In questo esempio impostiamo tramite piani di manutenzione di SSMS le attività di riorganizzazione e ricompilazione degli indici, riportiamo solo una parte delle schermate. Nella pagina di Selezione delle proprietà del piano indicare un Nome del piano e scegliere Singola pianificazione per l'intero piano
Nella pagina Seleziona attività di manutenzione scegliere la voce come sottoindicato
Nella pagina Seleziona ordine attività di manutenzione confermare le voci come sottoindicate (abbiamo messo prima ricompila indice a poi riorganizza indice)
Sulla pagina Definizione attività Ricompila indice selezionare i database di Business, nell'esempio selezioniamo solo PROVA, in caso se sull'istanza sql sono presenti solo database di Business potremmo anche usare l'opzione Tutti i database utente (esclusi master, model, msdb e tempdb) per coinvolgere nel controllo tutti i database presenti (attenzione però perché su sql potrebbero esserci anche altri database di altri software)
Sempre sulla pagina Definizione attività Ricompila indice togliere il flag su "conteggio pagine" e lascia gli altri parametri invariati
Sulla pagina Definizione attività Riorganizza indice selezionare i database di Business, nell'esempio selezioniamo solo PROVA, in caso se sull'istanza sql sono presenti solo database di Business potremmo anche usare l'opzione Tutti i database utente (esclusi master, model, msdb e tempdb) per coinvolgere nel controllo tutti i database presenti (attenzione però perché su sql potrebbero esserci anche altri database di altri software)
Sempre sulla pagina Definizione attività Riorganizza indice togliere il flag su "conteggio pagine" e lascia gli altri parametri invariati
Anche qui una volta confermato il piano lo troviamo in SSMS per eventuali modifiche
|