SQLServerITA

SQL Server e non solo

  • settembre: 2011
    L M M G V S D
     1234
    567891011
    12131415161718
    19202122232425
    2627282930  
  • Blog Stats

    • 25.881 hits
  • Inserisci il tuo indirizzo e-mail per iscriverti a questo blog e ricevere notifiche di nuovi messaggi per e-mail.

    Unisciti a 6 altri iscritti

SQL Server 2005/2008: conteggio database [powershell]

Posted by belthazor78 su 29 settembre 2011


Piccolo script che ci permette di fare un conteggio di tutte le nostre istanze e di tutti i nostri db che gestiamo.

Lo script è il seguente:

trap
{
write-error $(“DLL In Errore: ” + $_.Exception.GetType().FullName);
write-error $(“Messaggio: ” + $_.Exception.Message);
write-error $(“ID Errore: ” + $_.Exception.Number);
exit
}
#Pulizia Output
cls
#per conteggio database
[int]$TotSQLDB = 0
#per conteggio istanze
[int]$TotSQLIst = 0
#loop su tutte le istanze
ForEach ($instance in Get-Content “c:\ElencoIstanze.txt”)

{
#Stringa di connessione
$connectionString = “Server=$instance;Database=master;Trusted_Connection=True;”
$SqlConn = New-Object -Typename System.Data.SqlClient.SqlConnection
$SqlConn.ConnectionString = $connectionString
#Si apre la connessione
$SqlConn.open();
#Comando SQL da eseguire
$cmd = “SELECT COUNT(*) AS cnt FROM sys.databases WITH(NOLOCK) where database_id > 4”;
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand $cmd, $SqlConn
#Esecuzione query
$result = $SqlCmd.ExecuteReader()
$result.Read() > $null
#Risultato della query
$dbCount = $result[0]
#Chiusura connessione
$SqlConn.close()
Write-Host ‘========’ $instance ‘=======’
Write-Host ‘Database totali’ $dbCount
$TotSQLDB = $TotSQLDB + $dbCount
$TotSQLIst = $TotSQLIst + 1
}
Write-Host ”
Write-Host ‘ISTANZE SQL TOTALI:’ $TotSQLIst
Write-Host ‘DATABASE TOTALI:’ $TotSQLDB

#Ripuliamo tutto
[GC]::Collect()

L’output prodotto sarà simile a questo:

Per ogni istanza SQL trovata nel file ci sarà un report su quanti DB sono presenti in quella istanza; alla fine delle script verrà, inoltre, riportato un riassunto di tutte le istanze e relativi db 😀

Alcune cose da notare sullo script:

  1. Non tiene in considerazione i DB di sistema (where database_id > 4)
  2. Lo script per prendere le istanze su cui controllare il numero dei db usa il file c:\ElencoIstanze.txt…o create questo file o ne create un altro a vostro piacimento ricordandovi di cambiare anche il percorso al nuovo file nello script.
  3. Lo script, nella query da eseguire, aggiunge l’hint WITH(NOLOCK) per evitare di “bloccare” inutilmente le tabelle di sistema.
  4. Viene usato alla fine dello script il comando [GC]::Collect() per ripulire la cache del programma

Lascia un commento