Για να παρακολουθήσουμε τις επιδόσεις και τους πόρους που καταναλώνει ο MSSQL Server καλά είναι να αποφύγουμε τον Windows Task Manager και να κατεβάσουμε τον Process Explorer.
Ο Process Explorer θα μας επιτρέψει να δούμε αναλυτικά περισσότερες πληροφορίες για την διεργασία sqlservr.exe.Οπως βλέπεις και στις εικόνες παρακάτω οι πληροφορίες στον  Process Explorer είναι πολλές και αναλυτικές






Ένα άλλο εργαλείο για το monitoring είναι η επιλογή του Activity Monitor του Microsoft SQL Server Management Studio.



Με τους παραπάνω τρόπους παρακολουθούμε σε πραγματικό χρόνο τις διεργασίες και τις επιδόσεις.
Αν θέλουμε να καταγράψουμε για ένα χρονικό εύρος τότε έχουμε την επιλογή του δωρεάν εργαλείο της Microsoft το Performance Monitor. 
Θα το βρεις στο Control Panel\All Control Panel Items\Administrative Tools\Performance Monitor
ή δίνοντας στην εκτέλεση perfmon ή %windir%\system32\perfmon.msc /s



Οι βασικοί μετρητές που θα πρέπει να προσθέσεις είναι οι
  • Memory – Available MBytes
  • Physical Disk
  • Physical Disk – Avg. Disk sec/Read
  • Physical Disk – Avg. Disk sec/Write
  • Physical Disk – Disk Reads/sec
  • Physical Disk – Disk Writes/sec
  • Processor – % Processor Time
  • SQLServer: General Statistics – User Connections
  • SQLServer: Memory Manager – Memory Grants Pending
  • SQLServer: Buffer Manager - Page Life Expectancy
  • SQLServer: Buffer Manager - Buffer cache hit ratio
  • SQLServer: SQL Statistics – Batch Requests/sec
  • SQLServer: SQL Statistics – Compilations/sec
  • SQLServer: SQL Statistics – Recompilations/sec
  • System – Processor Queue Length




Απο command line μπορούμε να χρησιμοποιήσουμε την εντολή typeperf 
Μερικά παραδείγματα:
typeperf "\Processor(_total)\% Processor Time" "\Memory\Committed Bytes" "\Memory\Available Bytes"
ή export σε csv
typeperf "\Processor(_total)\% Processor Time" "\Memory\Committed Bytes" "\Memory\Available Bytes" -o systemPerf.csv
CPU
typeperf "Processor(_Total)\% Processor Time"
Memory
typeperf "\Memory\Available MBytes" "\Memory\Available KBytes" "\Memory\Available Bytes"
Disk Queue Length
typeperf "\PhysicalDisk(*)\Avg. Disk Queue Length"
SQL
typeperf "\SQLServer:SQL Statistics\Batch Requests/sec"
typeperf "\SQLServer:Databases(*)\Transactions/sec"



Επίσης υπάρχουν και τα Reports. Ρίξε μια ματιά



Για πιο εξειδικευμένες καταγραφές υπάρχουν άλλα εργαλεία. Επί πληρωμή και χωρίς.

Και μερικοί λόγοι που μπορεί να πηγαινει πολύ αργά μία βάση δεδομένων
  • Αργοί δίσκοι (όπως σκληροί δίσκοι SATArpm στις 5200 ή 7200rpm ή αργό iSCSI)
  • Αργό δίκτυο αν η βάση είναι σε δικτυακό storage ή iSCSI
  • Προγράμματα που ζητούν άσκοπα πάρα πολλά δεδομένα
  • Βάσεις δεδομένων που δεν έχουν καλά ευρετήρια (indexes).
  • CPU με λιγους πυρήνες ή που δεν φτάνουν για τις απαιτήσεις της βάσης.
  • Βάσεις δεδομένων με πολλά κενά που χρειάζονται καθάρισμα και indexing.