Il y arrive parfois qu'on veut exécuter un script sur plusieurs serveurs en même temps, cependant on ne veut pas ouvrir un Query Analyser ou Studio Management et perdre du temps.
Voici une façon plus rapide et dans l'exemple on va utiliser un script sqlversion.sql.
Préparation :
1- Créer un fichier servers.txt qui contient servername, pwd, user par ligne.
svr01,abc,sa
svr02,dce,sa
....
2- Créer un fichier SQLScripts.bat qui contient
ECHO OFF
REM This procedure takes the server name as parameter
REM ------------------------------------------------------------
rem This is usefull to make the maintenance of the SQL databases
rem It reindexes and makes backups of all databases( except system db) on an SQL server
rem This batch could be run in remote mode for all SQL servers
REM SETTINGS that need to be changed from one server to an other
REM ------------------------------------------------------------
SET SQLSERVER=%1
SET USER=%2
SET PWD=%3
rem SET SQLSERVER=SRVSQLTEST-MTL
rem SET USERID=
rem SET PASSWORD=
rem DATE /T >> %SQLSERVER%.log
rem TIME /T >> %SQLSERVER%.log
rem echo allo
OSQL -U%USER% -P%PWD% -S%SQLSERVER% -dMASTER -n -b -r0 -i"sqlversion.sql" -o%SQLSERVER%.log
pause
REM check for the errors
REM ----------------------
IF %ERRORLEVEL% EQU 1 GOTO EXIT
ECHO OK %SQLSERVER%
GOTO END
:EXIT
ECHO ********** %SQLSERVER% ERROR *************
:END
3- un fichier RunScriptToAllMyServers.bat qui contient
FOR /F "eol=; tokens=1,2,3* delims=, " %%i in (servers.txt) do SQLScripts %%i %%j %%k
4- un fichier sqlversion.sql qui contient
SELECT @@Version
Exécution :
1- Remplir le fichier servers.txt avec les serveurs donc vous avez de besoin.
2- Remplacer sqlversion.sql par le nom de votre script
3- Les fichiers servers.txt, RunScriptToAllMyServers.bat, SQLScritpts.bat et votre script doivent être dans le même répertoire.
4- Le résultat se fait dans un fichier [SQLSERVER_NAME].log
5- Exécuter le fichier RunScriptToAllMyServers.bat
No comments:
Post a Comment