Published on

August 7, 2012

Explorando os Tamanhos de Disco no SQL Server

Ao gerenciar um conjunto de servidores em um ambiente SQL Server, é importante ter uma compreensão clara dos tamanhos de disco em cada servidor. Essas informações podem ajudar no planejamento de capacidade, otimização de desempenho e solução de problemas. Neste artigo, exploraremos um script que pode ser usado para encontrar o tamanho do disco em um conjunto de servidores.

O script fornecido abaixo é um script PowerShell que pode ser executado para recuperar os tamanhos de disco:


# Script para encontrar a lista de unidades e tamanho da unidade em um conjunto de servidores
# Criado por - Vinoth N Manoharan
# Versão 1.1
# Data - 15/09/2011

Clear-Host
$List = @()

if ($args.Length -ne 2) {
    Write-Host "Contagem de parâmetros incorreta. Use -s ou -f para especificar o nome do servidor/lista de servidores"
} elseif (($args[0] -eq "-s") -or ($args[0] -eq "-S")) {
    $computer = $args[1]
    $drives = @()

    if ($computer -ne $null) {
        $srt = "Nome do Servidor :- " + $computer
        $srt Echo "---------------------------"

        # Propriedades para objeto de disco lógico do PowerShell:
        $drives = Get-WmiObject -ComputerName $computer Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3}

        $drives | Add-Member -MemberType ScriptProperty -Name SizeGB -Value {[math]::Round(($this.Size / 1GB),2)} -PassThru |
        Add-Member -MemberType ScriptProperty -Name FreeSpaceGB -Value {[math]::Round(($this.FreeSpace / 1GB),2)} -PassThru |
        ft Name, SizeGB, FreeSpaceGB -AutoSize
    }
} elseif (($args[0] -eq "-f") -or ($args[0] -eq "-F")) {
    $filename = $args[1]
    $computers = get-content $filename

    foreach ($computer in $computers) {
        $drives = @()

        if ($computer -ne $null) {
            $srt = "Nome do Servidor :- " + $computer
            $srt Echo "---------------------------"

            # Propriedades para objeto de disco lógico do PowerShell:
            $drives = Get-WmiObject -ComputerName $computer Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3}

            $drives | Add-Member -MemberType ScriptProperty -Name SizeGB -Value {[math]::Round(($this.Size / 1GB),2)} -PassThru |
            Add-Member -MemberType ScriptProperty -Name FreeSpaceGB -Value {[math]::Round(($this.FreeSpace / 1GB),2)} -PassThru |
            ft Name, SizeGB, FreeSpaceGB -AutoSize
        }
    }
} else {
    Write-Host "Parâmetro incorreto. Use -s ou -f para especificar o nome do servidor/lista de servidores"
}

O script pode ser executado com dois parâmetros diferentes:

  • -s: Este parâmetro é usado para especificar um único servidor. Por exemplo: FindDiskSize.ps1 -s <nomedoservidor>
  • -f: Este parâmetro é usado para especificar um arquivo contendo uma lista de servidores. Por exemplo: FindDiskSize.ps1 -f <nomedoarquivo com caminho completo como c:\test.txt>

Ao usar o parâmetro -s, o script recuperará os tamanhos de disco para o servidor especificado. Ao usar o parâmetro -f, o script lerá a lista de servidores do arquivo especificado e recuperará os tamanhos de disco para cada servidor da lista.

O script utiliza o cmdlet Get-WmiObject do PowerShell para recuperar informações sobre os discos lógicos nos servidores. Ele filtra os resultados para incluir apenas discos com um tipo de unidade 3, que representa discos locais.

O script também calcula os tamanhos de disco em gigabytes (GB) usando o método [math]::Round. Os tamanhos calculados são então exibidos em formato de tabela, mostrando o nome do disco, tamanho em GB e espaço livre em GB.

Ao executar este script, você pode facilmente obter informações sobre os tamanhos de disco em seu ambiente SQL Server. Essas informações podem ser valiosas para monitorar o uso de disco, identificar possíveis problemas de armazenamento e planejar o crescimento futuro.

Lembre-se sempre de revisar e validar os resultados obtidos a partir do script para garantir precisão e confiabilidade.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.