Il DBA (DataBase Administrator) utilizza statement SQL particolari per
estrarre le informazioni piu' interessanti sui DB che amministra.
Questa pagina raccoglie e descrive gli script SQL piu' utili ed interessanti per
la gestione di un database Microsoft SQL Server.
SQL Server e' il diffusissimo RDBMS di Microsoft ed il suo T-SQL e' molto potente.
Gli esempi SQL riportati riguardano: Sessioni, Lock, Utilizzo di spazio, Performance, ...
Il documento e' volutamente breve e pratico con esempi funzionanti
di statement SQL.
Informazioni di dettaglio si possono trovare nella
documentazione ufficiale.
SQL Server fornisce un SQL ricco di funzionalita'. Il data dictionary e' molto ampio e spesso le informazioni si possono ricavare in piu' modi da SQL o da interfaccia grafica. Molti sistemisti infatti utilizzano il Microsoft SQL Server Management Studio (SSMS) che fornisce report e strumenti automatici ma nel seguito vedremo come ottenere le informazioni solo con query SQL quindi richiamabili da linea di comando con sqlcmd o da un qualsiasi client.
Gli statement SQL a disposizione di un DBA SQL Server sono moltissimi... in questa pagina faremo una scelta su quelli piu' utili ed interessanti.
Una prima visione sull'utilizzo di una base dati e' quella delle connessioni presenti:
Per ottenere le sessioni che hanno query attive:
Le colonne selezionate sono tra le piu' utili ma naturalmente e' possibile estrarre
maggiori dettagli dalle viste dinamiche di SQL Server.
Entrambe le query escludono la sessione corrente dall'elenco delle sessioni ottenute.
Gli oggetti sulla base dati vengono protetti dall'utilizzo concorrente in SQL Server mediante la gestione dei lock. La query seguente utilizza qualche join per ottenere le query bloccate e da quale processo:
Questa query consente di capire con certezza chi e' il colpevole e chi e' la vittima del lock.
Decidere poi se terminare il colpevole o la vittima e' un'altra questione...
Nota:
prima di ammazzare qualcuno... e' importante essere certi di quello che si sta facendo!
La gestione dello spazio disco in SQL Server si basa sul file system del sistema ospite. Sono utilizzabili diverse organizzazioni dei dati come struttura interna per soddisfare i piu' specifici requisiti di memorizzazione. Tipicamente le primary key vengono implementati come indici clusterizzati mentre gli altri indici sono indici B-tree secondari.
Un server SQL Server ospita piu' database. Quindi un primo punto di vista e' controllare l'occupazione dei database:
Analizzando invece gli oggetti contenuti nella base dati corrente e' possibile ottenere i dati di dettaglio. Ecco i 20 oggetti di maggior dimensione:
L'ottimizzazione delle performance e' il leitmotiv di ogni DBA.
I punti di vista sono moltissimi:
individuare gli statement SQL piu' pesanti,
ottimizzare i piani di esecuzione degli statement,
determinare eventuali bottleneck,
effettuare il tuning sui parametri di configurazione,
...
Ecco qualche query di esempio:
La prima query permette di individuare le 10 query piu' pesanti utilizzando il Query Store.
La seconda query riporta il query plan di una query specifica.
La terza query riporta le query che sono peggiorate e riportano maggiori differenze nel tempo nell'esecuzione.
SQL Server ha un numero elevato di parametri di configurazione
che possono essere modificati per effettuare il tuning della prestazioni.
L'ultima query riporta i parametri presenti.
Naturalmente vi sono decine di ulteriori query utili
(eg. per i transaction log: sys.dm_db_log_space_usage),
ma per ragioni di spazio non e' possibile
elencarle tutte.
Deve essere sottolineato che
SSMS e Azure Data Studio offrono report predefiniti che utilizzano query analoghe
e sono facilmente interpretabili... ma a noi piace scrivere query complicate in SQL!
Un'introduzione a SQL Server si trova in questa paginetta. Maggiori dettagli tecnici sulle diverse versioni di SQL Server e le date di rilascio di ogni versione sono riportate in questo documento.
Il sito ufficiale SQL Server contiene tutta la documentazione ufficiale.
Volete leggere altre pagine come questa?
Provate qui!
Titolo: SQL4DBA - SQL per DBA SQL Server
Livello: Esperto
Data:
14 Febbraio 2025
Versione: 1.0.1 - 1 Aprile 2025
Autore: mail [AT] meo.bogliolo.name