El pasado viernes, os puse un ejemplo de cómo correr una misma consulta en varios servidores y presentar todos los resultados en un mismo archivo de texto. Os ponía en el ejmplo un sencillo script para monitorizar el estado de la tempdb.
A continuación tenéis otro ejemplo, esta vez en perl. El script crea una carpeta con la fecha presente y en ella por cada instancia consultada crea un archivo de texto.
En mi caso, empleo este script para la monitorización diaria de logs entre otros.
#!perl #--------------------------------------------------------- #--GETTING DATES FROM WHICH LOGS WILL BE WRITTEN #--------------------------------------------------------- #--gets dates:current & day before to grep those entries #--from the log file generated #--gets date to delete seven days old rpts use Time::localtime; #-- get dates #$tm = localtime(time - (86400)); #for day before $tp = localtime; #for current #$td = localtime(time - (604800)) ; # seven days ago #--for each date, two different formats: yyyy-mm-dd -> SQL 7, 2k, 2005 #--yyyy/mm/dd -> SQL 6.5 #-- & eliminate possible blank spaces $variable= sprintf("%04d-%02d-%02d\n", $tp->year+1900, ($tp->mon)+1, $tp->mday); $variable=~s/\s//g; $report = "script.sql"; #----------------------------------------------- #--MAKE DIRECTORY WHERE RPTS WILL BE PLACED #----------------------------------------------- $directory ="$variable"; system("mkdir $directory"); @todo = ( 'servidor1', 'servidor1\instancia1', ); system( " foreach (@todo) { #--assign scalar value server $server=$_; # server name itself $output=$_; # since win cannot create files with "\"... $output=~s/\\/X/; #...remove backslash and replace it for "X" #--remove spaces $server=~s/\s//g; $output=~s/\s//g; system("osql -E -S $server -t60 -n -w1000 -i $report -o $directory\\$output.log"); } #--END |
Podéis copiar el ejemplo en un archivo y salvarlo con extensión pl. Si estáis interesados en cómo usar perl con SQLl Server os recomiendo este libro
No hay comentarios:
Publicar un comentario