Alterando um valor fixo em Muitas Procedures !!!!


 

Pessoal,

Teve uma pergunta bem legal no ask.sqlservercentral.com (diga-se que eu e o Felipe Ferreira estamos batendo ponto lá hahahaahah)  que era assim :

O cara precisava alterar um valor em mais de 300 procs, um valor fixo. Algo como  Raiserror(876…) trocar por Raiserror(666…)

E que são 8 da manhã e eu estou ouvindo um Iron – The number of the beast

"Woe to you, Oh Earth and Sea,
for the Devil sends the beast with wrath,
because he knows the time is short…
Let him who hath understanding reckon
the number of the beast for it is a human number,
it’s number is Six hundred and sixty six"

Mas voltando ao assunto, poderia ser feito com Powershell  !!!!!!!!!!!!!!!!!!!!!!!

Eu não costumo usar a maneira que vou mostrar, foi somente para resolver o problema. Estou usando como file system (NÃO PERCAM MINHA APRESENTAÇÃO), eu costumo usar a SMO.

foreach ( $StoredP in Get-ChildItem SQLSERVER:\SQL\SEUSERVIDOR\default\SEUDATABASE\storedprocedures ) {
    $TextSP = ((($StoredP.textheader + $StoredP.textbody) -replace "Create","Alter") -replace "OLDVALUE","NEWVALUE")
    $file = "c:\SEUPATH\" + $StoredP.Name + ".sql"
    Out-File -inputobject $textsp -filepath $file "Default" -append
}

 

4 LINHAAAAAAAAAAAAAAAAAAASSSSSSSSS !!!!!!!!!!!!!!!!!!
(e isso porque AINDA não babo colorido em powershell, porque tem uns caras aí que fazem isso numa linha só)

 

SEUSERVIDOR = Nome do servidor
default = Nome da instância, se não tiver deixe default
SEUDATABASE = Nome do seu banco
SEUPATH = Path que será gerado os .sql (scripts das procs)
OLDVALUE = Valor Antigo
NEWVALUE = Valor Novo

Este script pega proc a proc, troca o create por alter e no OLDVALUE coloco o valor a procurar. No NEWVALUE o valor a ser colocado.

Ai eu gero um .sql no caminho c:\SEUPATH de cada proc, somente para pegar uma amostra e verificar se está tudo ok.

Estando tudo certinho :

 

foreach ($path in Get-item "c:\SEUPATH\*.sql")
{
Invoke-Sqlcmd -ServerInstance NOMESEVIDOR -Database NOMEDATABASE -InputFile $path
}

 

Troque o NOMESEVIDOR pelo nome do seu servidor e o NOMEDATABASE pelo nome do seu database !!!

Será alterado !!!!

 

“Six, six, six the number of the beast.
Hell and fire was spawned to be released.”

 

POWERSHELL ROCKS !!!!!!

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 Alterando um valor fixo em Muitas Procedures !!!!

  1. Felipe says:

    adorei essa solução! realmente o powershell é mto bom… hopefully eu vou aprender ele logo 😛

  2. Laerte says:

    Fala velhinho !!!!!!!! cara..eu não me vejo mais sem Powershell !!!!

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