Soluzioni tecniche

Cosa sta facendo adesso SQL Server?

14 Maggio 2013

E' la vigilia di un giorno di festa: domani nessuno lavora.
Un ottimo momento per fare un'operazione un po' intrusiva sui nostri sistemi, così se qualcosa va storto o per le lunghe, c'è tutto il tempo di recuperare.

Devo svuotare un paio di tabelle temporanee che vengono utilizzate dal nostro sito. Entrambe hanno oltre nove milioni di record. Le strade possibili sono due:

  1. svuotare direttamente le tabelle da SQL Server e cambiare il contenuto "sotto al naso" del nostro Application Server. Soluzione performante, ma non è che l'Application Server "si arrabbia"?
  2. Cambiare alcuni parametri "magici" dell'Application Server in modo che sia lui a dare i comandi a SQL Server per svuotare le tabelle.

Siccome ne ho viste tante, decido di andare sul sicuro: scelgo la seconda strada, quella conservativa

Modifico i parametri e mi aspetto che dopo una mezz'oretta il sistema inizi a chiedere a SQL Server di svuotare le tabelle temporanee (che, mentre l'applicativo è in piedi, vengono di continuo utilizzate).
Dopo un po' torno a vedere che succede: non mi sembra che le cose stiano andando bene (le tabelle sono ancora piene) e il sito non risponde più, pur senza dare alcun errore.
Inizio un bel troubleshooting, ma prima di descrivervelo vi faccio una domanda: voi cosa fate per capire cosa sta davvero facendo SQL Server?




Io ho risolto i miei dubbi: ho trovato il modo di capire cosa sta impegnando SQL Server.
Lo volete sapere anche voi? Bene, ve lo spiego subito. 

  • Collegatevi al vostro database SQL Server.
  • Aprite SQL Management Studio e fornite le credenziali.
  • Selezionate il nome del database ed espandetelo con il segno +.
  • Andate su Database/Views/System views/dm_exec_requests.

Eseguendo questa vista, vedrete tutto quello che sta facendo il vostro SQL Server.


SQL Server


Perché è così importante? Soprattutto per scoprire le query che vanno in stato di suspended

Talvolta, quando si processano alcune query, queste vanno in stato di suspended bloccando automaticamente la tabella in questione (nel mio caso, ecco perché non mi funzionava più il sito).
E non c'è nulla da fare: si può solo aspettare che la query finisca.
Ma io non posso aspettare; sì, lo so, l'operazione è impegnativa ma non posso bloccare il sito per tanto tempo.
Ora, con i passaggi indicati sopra, si può scoprire cosa sta facendo SQL Server e se c'è qualche query in stato di suspended.

Ma adesso viene il bello, perché vediamo come sbloccare quella tabella forzando SQL a rilasciarla

  • Individuate l'ID del processo in stato di suspended (c'è proprio la colonna "session_id");
  • aprite una finestra di SQL query e digitate il comando "Kill".

Questo comando stronca la query in stato di suspended e la tabella si sblocca.

E tu, come scopri cosa sta facendo SQL Server?

 

Autore
Claudio Panerai
Gli ultimi prodotti che vi ho portato, nel 2020: Vade Secure Il primo sistema antispam/antihishing/antimalware basato sull'intelligenza artificiale e appositamente progettato per Office 365. Naturalmente a misura di MSP. ID Agent Piaffaforma che consente agli MSP di monitorare le credenziali (proprie e dei clienti) che sono in vendita nel dark web.
Nato a Ivrea nel 1969, è sposato e padre di due figlie. Laureato in Scienze dell’Informazione nel 1993, ha dapprima svolto numerose consulenze e corsi di formazione per varie società per poi diventare responsabile IT per la filiale italiana del più grande editore mondiale di informatica, IDG Communications. Dal 2004 lavora in Achab dapprima come Responsabile del Supporto Tecnico per poi assumere dal 2008 la carica di Direttore Tecnico. Giornalista iscritto all’albo dei pubblicisti, dal 1992 pubblica regolarmente articoli su riviste di informatica e siti web di primo piano. E' stimato da colleghi e clienti per la schiettezza e onestà intellettuale. Passioni: viaggi, lettura, cinema, Formula 1, sviluppo personale, investimenti immobiliari, forex trading. Claudio è anche su LinkedIn e Facebook.
Commenti (0)

Lascia un commento

Il tuo indirizzo e-mail non verrà pubblicato, lo utilizzeremo solamente per inviarti la notifica della pubblicazione del tuo commento. Ti informiamo che tutti i commenti sono soggetti a moderazione da parte del nostro staff.