stephanlinke

[PRTG] Get MSSQL DBSize

Nov 13th, 2015
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Get-SqlDatabaseSize {
  2.     param (
  3.         [string]$SqlServerName = "PERCY\SOUTHWIND"
  4.     )
  5.  
  6.     $ConnectionString = "data source = $SqlServerName; initial catalog = master; trusted_connection = true;"
  7.     $SqlConnection = New-Object System.Data.SqlClient.SqlConnection($ConnectionString)
  8.     $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
  9.     $SqlCmd.Connection = $SqlConnection
  10.     $SqlCmd.CommandText = "
  11.        select
  12.             database_name = d.name,
  13.             total_size_gb =
  14.                 convert(decimal(11, 2), sum(mf.size) * 8.0 / 1024 / 1024)
  15.        from sys.master_files mf
  16.        inner join sys.databases d
  17.        on mf.database_id = d.database_id
  18.        group by d.name;"
  19.  
  20.     $Output = New-Object System.Data.DataTable
  21.     $sda = New-Object System.Data.SqlClient.SqlDataAdapter($SqlCmd)
  22.  
  23.     try {
  24.         $sda.Fill($Output) | Out-Null
  25.     }
  26.     finally {
  27.         $sda.Dispose()
  28.         $SqlCmd.Dispose()
  29.         $SqlConnection.Dispose()
  30.     }
  31.  
  32.     $Databases = ( $Output |
  33.         Select-Object @{Name = "ServerName"; Expression = { $SqlServerName }},
  34.             @{Name = "DatabaseName"; Expression = { $_.database_name }},
  35.             @{Name = "SizeGB"; Expression = { $_.total_size_gb }} |
  36.             Sort-Object SizeGB -Descending )
  37.    
  38.     Write-Host "<?xml version='1.0' encoding='UTF-8' ?><prtg>";
  39.  
  40.  
  41.  
  42.     foreach($Database in $Databases){
  43.      Write-Host @"
  44.        <result>
  45.               <channel>$($Database.DatabaseName)</channel>
  46.               <value>$($Database.SizeGB)</value>
  47.               <unit>CustomUnitk</unit>
  48.               <CustomUnit>GB</CustomUnit>
  49.               <float>1</float>
  50.            </result>
  51. "@;
  52.     }
  53.     Write-Host "</prtg>";
  54. }
  55.  
  56. Get-SqlDatabaseSize
Advertisement
Add Comment
Please, Sign In to add comment