Retornar valores do SQL Server usando Powershell


 

Pessoal,

Eu vejo bastane em blogs e códigos powershell quando se precisa retornar valores do SQL Server, seja por select ou chamando procedures, usa-se o ADO, como neste exemplo :

Criei uma tabela chamada TestePowershell e coloquei algumas linhas :

   1: CREATE TABLE TestePowershell
   2: (codigo INT, nome VARCHAR(100))
   3:  
   4: INSERT INTO TestePowershell (codigo,nome) 
   5: VALUES (1,'Laerte Junior'),(2,'João Da Silva'),(3,'João Roberto'),(4,'Renato Junior')

Bom, uma maneira como eu disse é usar ADO :

   1: $SQL = "Select * from TestePowershell"
   2: $objConnection = New-Object -comObject "ADODB.Connection"
   3: $objCommand = New-Object -comObject "ADODB.Command"
   4: $objConnection.Open("Provider=ADODBbject;")
   5: $objCommand.ActiveConnection = $objConnection
   6: $objCommand.CommandText = $SQL
   7: $objRecordSet = $objCommand.Execute() 
   8:  
   9: Do
  10: {
  11:     $objRecordSet.Fields.item("codigo") |Select-Object codigo,Value 
  12:     $objRecordSet.MoveNext()
  13: }
  14: Until ($objRecordSet.eof) 
  15:  
  16: $objConnection.Close()

Mas galera, eu sempre digo..tudo no powershell é objeto e CONSISTÊNCIA é a palavra…a saida de um cmdlet é a entrada do outro….

Poxa, então quer dizer que eu posso fazer assim :

   1: Invoke-Sqlcmd -Database DBA -ServerInstance R2D2 -Query "Select * from Testepowershell" | Format-table 

Ou se eu quiser a saida em lista :

   1: Invoke-Sqlcmd -Database DBA -ServerInstance R2D2 -Query "Select * from Testepowershell" | Format-list

Ou se eu quiser definir uma condição, digamos todos que tenham “Junior” no nome :

   1: Invoke-Sqlcmd -Database DBA -ServerInstance R2D2 -Query "Select * from Testepowershell" | Where-Object { $_.nome -match "Junior"} | format-table

Ou até executar uma procedure :

   1: CREATE PROCEDURE usp_TestePowershell
   2: AS
   3:  
   4: SELECT * FROM Testepowershell
   1: Invoke-Sqlcmd -Database DBA -ServerInstance R2D2 -Query "exec  usp_Testepowershell" | Where-Object { $_.nome -match "Junior"} | format-table

Show né…

Lembrando que o Invoke-sqlcmd faz parte dos snapins do sql server 2008, ou seja, basta carregá-los em seu profile.

Você também não precisa ter o Sql Server 2008 instalado, aqui no meu blog mostra como fazer isso 🙂

Ha mas e seu eu quiser retornar um parametro que foi enviado por output ?..Pouquinho mais complicado, mas aqui explica certinho como fazer :

Powershellcommunity.org

É isso ai..fui

POWERSHELL ROCKS !!!!

“Under the arc of a weather stain boards
Ancient goblins, and warlords
Come out of the ground, not making a sound
The smell of death is all around
And the night when the cold wind blows, no one cares, nobody knows

(2x)
I don’t want to be buried in a Pet Sematary
I don’t want to live my life again”

Pet Sematary

Ramones

About Laerte Junior

Laerte Junior Laerte Junior is a SQL Server specialist and an active member of WW SQL Server and the Windows PowerShell community. He also is a huge Star Wars fan (yes, he has the Darth Vader´s Helmet with the voice changer). He has a passion for DC comics and living the simple life. "May The Force be with all of us"
This entry was posted in Powershell. Bookmark the permalink.

2 Responses to Retornar valores do SQL Server usando Powershell

  1. Demétrio says:

    Muito bom Laerte. Mostrando várias formas de execução. Abraços

  2. Laerte says:

    Grande Demetrio..Valeu meu amigo !!! 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s