scriptDatabase.rb
Utilise la classe sqltools/extract pour scripter sur disque l'intégralité des objets d'un ou de plusieurs serveurs. Les paramètres de connexion aux serveurs est stocké dans un fichier de configuration YAML, nommée “config.yaml” et posé dans le répertoire du script. Chaque serveur doit être mentionné dans le fichier de configuration selon cette syntaxe :
EntryName: host: hotname integrated: [0|1] login: login pwd: password
le paramètre “integrated” indique si la connexion doit être initiée en sécurité intégrée (Windows). Si integrated = 1, login et pwd sont inutiles.
chaque serveur est scripté dans un dossier créé avec la date courante (yyyy-mm-dd.hhmm), et dans un sous-dossier au nom du serveur (hostname dans la configuration).
Ensuite l'arborescence est constitutée du nom de la base et du type d'objet. Chaque objet est sauvegardé dans un fichier séparé. Le nom du fichier est consituté du nom de l'objet + . + type d'objet + .sql La répétition du type d'objet dans le nom du fichier permet un traitement ultérieur (par exemple un déploiement automatique). Pour les tables, les containtes et les indexes sont scriptés dans des fichiers séparés, afin de permettre le déploiement d'une base à neuf (en appliquant d'abord les scripts de table, et ensuite les scripts de containtes, qui sinon pourraient faire référence à des tables non encore existantes). Le nommage des objet s'inspire de ce qu'Erland Sommarskog a fait avec AbaPerls, collection de scripts Perl destiné au déploiement de sous-systèmes SQL Server à partir de VSS. L'idée est soit de pouvoir ensuite utiliser AbaPerls avec quelques légères modifications, soit de développer en Ruby un système similaire correspondant plus à mes besoins.
Pour gérer les changements sur un serveur, je recommande d'utiliser WinMerge pour visualiser un diff de deux extractions.
sources
- http://www.babaluga.com/code/ruby/config.yaml - config d'exemple



