Nell'ultimo anno ho presentato molte sessioni sul database SQL di Azure, oltre ad essere autore di numerosi articoli e blog. Spesso mi viene chiesto se la manutenzione del database è ancora un fattore importante quando si usa il database SQL di Azure. Sì:attività come la manutenzione dell'indice, gli aggiornamenti delle statistiche e il controllo della coerenza sono ancora importanti e spetta al DBA pianificare queste attività. La confusione deriva dal fatto che il database SQL di Azure è una piattaforma come servizio e Microsoft è responsabile dell'infrastruttura e della gestione dei backup. Mentre alcuni aspetti del danneggiamento fisico potrebbero essere presi in considerazione, il danneggiamento logico all'interno del database non lo è. Per questo motivo, consiglio comunque ai client di eseguire DBCC CHECKDB
per garantire che siano completamente protetti.
Il problema che si pone con qualsiasi nuovo DBA che lavora con il database SQL di Azure è che non esiste un SQL Server Agent integrato come siamo abituati con SQL Server Standard ed Enterprise Edition.
Per pianificare i processi di manutenzione su un database SQL di Azure, sono disponibili diverse opzioni:
- Server collegati
- Piani di manutenzione del database
- Powershell
- Servizi di Azure
- Lavori elastici
Le seguenti demo presuppongono che tu abbia già configurato account di accesso, regole del firewall e altre impostazioni di sicurezza per accedere in remoto ai database SQL di Azure.
Server collegati
La connessione a un database SQL di Azure tramite un server collegato è un approccio molto comune poiché la maggior parte dei DBA ha già familiarità con la creazione e la gestione di server collegati. I due modi più comuni in cui ho visto i client che utilizzano server collegati sono con SQL Server Native Client o il provider Microsoft OLE DB per i driver ODBC come provider. Se utilizzi il client nativo, dovrai fornire il nome del server come origine dati; tuttavia, se si utilizza il driver ODBC, sarà necessario ottenere la stringa di connessione e utilizzarla come stringa del provider. Entrambi questi valori sono disponibili nel portale di Azure per il database. Dopo aver fatto clic sul database, vedrai il nome del server e un'opzione per mostrare le stringhe di connessione al database. Questo nome del server, sqlperformance.database.windows.net è quello che userei per l'origine dati di SQL Server Native Client.
Quando fai clic su "Mostra stringhe di connessione al database", hai attualmente opzioni per ADO.NET, JDBC, ODBC e PHP. Per visualizzare la stringa di connessione per ODBC, fare clic sulla scheda ODBC.
Successivamente dovrai creare il server collegato in SSMS. In "Oggetti server", fai clic con il pulsante destro del mouse su "Server collegati", seleziona "Nuovo server collegato" e digita le informazioni richieste in base alla scelta del provider dell'origine dati.
Quindi fai clic su "Sicurezza" e definisci le tue preferenze. In genere vedo l'opzione "Essere realizzato utilizzando questo contesto di sicurezza" con un accesso remoto e una password forniti.
Una volta che hai definito tutto questo, fai clic su OK. Ora puoi fare clic con il pulsante destro del mouse sul tuo nuovo server collegato e testare la connessione.
È ora possibile fare riferimento al server collegato per chiamare qualsiasi stored procedure, ad esempio Index Optimize e DatabaseIntegrityCheck di Ola Hallengren, direttamente sul database SQL di Azure in un passaggio del processo di SQL Agent.
Piani di manutenzione del database
Se prevedi di utilizzare un piano di manutenzione del database per la tua manutenzione, il processo è un po' più semplice. Per iniziare, crea semplicemente il tuo piano di manutenzione manualmente o utilizzando la procedura guidata. Se si utilizza la procedura guidata, una volta creato il piano di manutenzione, è possibile modificare il piano e quindi aggiungere la connessione ad Azure. Quindi modificare ogni attività per utilizzare la nuova connessione. La schermata di connessione dovrebbe essere simile alla seguente:
Ora puoi pianificare l'esecuzione dei piani di manutenzione del database durante la finestra di manutenzione.
PowerShell
PowerShell è un'opzione eccellente per lavorare con attività ripetibili e l'uso di PowerShell con il database SQL di Azure è semplice. Puoi utilizzare la funzione Invoke-SqlCmd per eseguire query o eseguire istruzioni sui tuoi database.
Un approccio comune consiste nell'utilizzare uno script simile a:
$params = @{ 'Database' = 'YourDatabase' 'ServerInstance' = 'instance.database.windows.net' 'Username' = 'UserName' 'Password' = 'ComplexP@$$word' 'Query' = 'Your Query Here' } Invoke-Sqlcmd @params
Per la tua query, puoi utilizzare l'ottimizzazione dell'indice e i controlli di coerenza di Ola Hallengren o qualsiasi script personalizzato che hai utilizzato. Dovrai quindi pianificare i tuoi script di PowerShell utilizzando qualsiasi utilità di pianificazione che utilizzi per la tua organizzazione.
Servizi Azure
Nella piattaforma Azure è integrato l'Automazione di Azure e per iniziare è necessario creare un account di automazione. Dovrai fornire un nome per l'account, selezionare la sottoscrizione, il gruppo di risorse, la posizione e determinare se desideri creare un account Azure RunAs.
Dopo aver creato il tuo account, puoi quindi iniziare a creare runbook. Puoi fare qualsiasi cosa con i runbook. Esistono numerosi runbook esistenti che puoi sfogliare e modificare per uso personale, inclusi provisioning, monitoraggio, gestione del ciclo di vita e altro ancora.
Puoi creare i runbook offline o usando il portale di Azure e vengono creati usando PowerShell. In questo esempio, riutilizzeremo il codice della demo di PowerShell e dimostreremo anche come usare l'utilità di pianificazione del servizio di Azure integrata per eseguire il codice PowerShell esistente senza dover fare affidamento su un'utilità di pianificazione locale, un'utilità di pianificazione o una macchina virtuale di Azure per pianificare un lavoro.
Inizia facendo clic su Runbook
Quindi fai clic su "Aggiungi un runbook"
Fai clic su "Crea un nuovo runbook"
Fornisci un nome e un tipo di runbook, ho selezionato PowerShell per la mia demo.
Ti trovi quindi in una schermata di modifica per il tuo nuovo runbook. Qui è dove puoi configurare i dettagli e creare il tuo runbook. Per questa demo, sto solo eseguendo uno script di PowerShell per chiamare una stored procedure su un database. Una volta che hai elaborato tutto il codice, puoi pubblicare e salvare il tuo runbook.
Da qui, puoi avviare il runbook e convalidare tutto funziona di conseguenza, nonché pianificare l'esecuzione del runbook in orari specifici. Esaminiamo questo processo facendo clic su "Programma"
Dovremo fare clic su "Collega una pianificazione al tuo runbook" e poiché non abbiamo creato alcuna pianificazione prima, dovremo definirne una nuova facendo clic su "Crea una nuova pianificazione".
Proprio come facciamo in SQL Server Agent, fornisci un nome di pianificazione, una descrizione se lo desideri, quando iniziare e con quale frequenza deve essere eseguito. Ho impostato questo si verifica ogni giorno alle 2 del mattino.
Ora ho un runbook pubblicato, programmato per essere eseguito ogni notte alle 2 del mattino per eseguire la manutenzione dell'indice su uno dei miei database.
Lavori elastici
Al momento, Elastic Jobs è ancora in anteprima, quindi non entrerò nei dettagli a causa dell'elevata probabilità che le schermate e le funzionalità cambino.
L'utilizzo di lavori elastici richiede la definizione di un pool di database elastici e l'assegnazione di almeno un database al pool su cui eseguire i lavori. Dopo aver creato il pool elastico e aggiunto un database, puoi fare clic su Crea lavoro.
Assegna al tuo lavoro un nome descrittivo e fornisci il nome utente e la password con cui connetterti ai database, nonché lo script che desideri eseguire. Fai clic su Salva e ora hai un lavoro elastico.
È quindi possibile scegliere di eseguire il lavoro, visualizzare lo script o annullare il lavoro se è in esecuzione.
Sebbene ci siano alcune cose che puoi fare tramite il portale di Azure con i processi elastici, la potenza reale e le opzioni di configurazione sono disponibili tramite l'API di PowerShell. Per pianificare un processo, è necessario usare il cmdlet New-AzureSQLJobSchedule. Maggiori dettagli sulle funzionalità aggiuntive e su come pianificare i lavori sono disponibili qui:
- Crea e gestisci processi elastici del database SQL utilizzando PowerShell
Nel complesso, mi piace la funzionalità dei lavori elastici e spero che quando sarà resa disponibile a livello generale, verranno integrate più funzionalità nel portale di Azure senza doverlo gestire con PowerShell. Mi piace che tu possa eseguire direttamente T-SQL, senza doverlo eseguire all'interno di PowerShell e come può essere eseguito su tutti i database nel pool.
Riepilogo
Quando si tratta di database SQL di Azure, sì, sei comunque responsabile di una certa manutenzione dei tuoi database. Esistono numerosi metodi per pianificare i lavori e, a seconda delle esigenze e delle dimensioni dell'ambiente, alcune opzioni rappresentano soluzioni migliori. I server collegati e i piani di manutenzione del database sono metodi semplici e veloci se si hanno macchine virtuali locali o di Azure con SQL Server già configurato e una piccola distribuzione di Azure. PowerShell è sempre una buona opzione, devi solo trovare una soluzione per pianificare l'esecuzione degli script. L'automazione di Azure è una soluzione molto solida che consente di creare runbook per eseguire qualsiasi cosa e pianificare facilmente i runbook e i processi elastici è un'altra ottima soluzione basata su Azure se si hanno attività da eseguire su un gruppo di database in un pool elastico.