Published on

December 4, 2021

Usando PowerShell e SMO para Gerenciar o SQL Server

Como um DBA do SQL Server, você pode estar familiarizado com a linguagem de script da Microsoft chamada Windows PowerShell. Ela é amplamente utilizada para administrar e gerenciar servidores e estações de trabalho do Windows. Mas você sabia que o PowerShell também pode ser uma ferramenta poderosa para gerenciar o SQL Server?

Neste artigo, exploraremos como você pode usar o PowerShell e os Objetos de Gerenciamento do SQL Server (SMO) para realizar várias tarefas e automatizar seus processos de gerenciamento do SQL Server.

Escrevendo e Executando Scripts do PowerShell

Scripts do PowerShell são uma sequência de comandos e cmdlets do PowerShell escritos juntos para criar tarefas mais complexas. Você pode escrever um script usando qualquer editor de texto, como o Notepad ou o TextPad. O PowerShell v2.0 CTP também vem com um Windows PowerShell Gráfico que você pode usar como seu ambiente de desenvolvimento para o PowerShell.

Para executar um script do PowerShell, você pode chamá-lo de dentro do Windows PowerShell especificando seu caminho completo ou relativo. No entanto, por padrão, você não poderá executar scripts no Windows PowerShell devido à política de segurança. Você precisa modificar a política de execução dentro do Windows PowerShell chamando o cmdlet Set-ExecutionPolicy e passando a política de execução como um parâmetro.

Depois de definir a política de execução, você pode executar seus scripts a partir do console do PowerShell.

Passando Parâmetros Variáveis para um Script

Para tornar seus scripts dinâmicos, você pode usar parâmetros para passar valores diferentes para eles. O uso de parâmetros com um script permite que dados adicionais sejam passados de forma estruturada. Você pode usar a variável $args[i] para se referir a argumentos que são passados para um script.

Por exemplo, digamos que você queira criar um script que retorne todos os processos com PrivateMemorySize maior que um valor especificado. Você pode definir variáveis que conterão os parâmetros e usar essas variáveis dentro do script.

$attrib = $args[0]
$val = $args[1]

Get-Process | Where-Object {$_.$attrib -gt $val} | SELECT ProcessName, $attrib | Format-List

No script acima, a variável $attrib contém o nome da propriedade e a variável $val contém o valor. Você pode então chamar o script e passar os valores dos parâmetros para ele.

Objetos de Gerenciamento do Servidor (SMO): Seu Portal para o SQL Server

Objetos de Gerenciamento do Servidor (SMO) é uma coleção de objetos projetados para programar todos os aspectos do gerenciamento do SQL Server. Ele permite o gerenciamento programático de instâncias do SQL Server e é compatível com o SQL Server 2000, 2005 e 2008.

Para usar o SMO, você precisa carregar as assemblies .NET apropriadas usadas pelo SMO. Após carregar as assemblies do SMO, você pode criar uma instância do objeto Server para representar a instância do SQL Server à qual você se conectará.

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')

$serverInstance = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "NomeDaInstancia"

Depois de criar o objeto Server, você pode usar suas propriedades e métodos para realizar várias tarefas. Por exemplo, você pode obter informações sobre a instância do SQL Server, como a edição, versão e nível do service pack.

$instance = $args[0]

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | Out-Null

$serverInstance = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $instance

Write-Host "Nome: " $serverInstance.Name
Write-Host "Edição: " $serverInstance.Edition
Write-Host "Versão: " $serverInstance.VersionString
Write-Host "ProductLevel: " $serverInstance.ProductLevel

No script acima, o cmdlet Write-Host é usado para exibir os resultados na janela do console. Você pode usar as opções de formatação mencionadas anteriormente para gerar um relatório a ser exportado em HTML ou CSV.

Ao combinar o PowerShell e o SMO, você pode automatizar várias tarefas de gerenciamento do SQL Server e tornar seu trabalho como DBA do SQL Server mais eficiente e simplificado.

Então, da próxima vez que você precisar realizar uma tarefa no SQL Server, considere usar o PowerShell e o SMO para simplificar e automatizar o processo.

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.