Fondo
J'ai travaillé plusieurs années dans une entreprise où tous les objets de la base de données étaient stockés dans le contrôle de la source, un fichier par objet. Nous disposions d'une liste de tous les objets qui était mise à jour lorsque de nouveaux éléments étaient ajoutés (pour nous permettre d'exécuter les scripts dans l'ordre et de gérer les dépendances) et d'un scripts VB qui s'exécutait pour créer un grand scripts destiné à être exécuté contre la base de données.
Toutes les tables ont été "créées si elles n'existent pas" et toutes les SP, etc. ont été supprimées et recréées.
Jusqu'à présent, je travaille dans un endroit où la base de données est la base principale et où il n'y a pas de contrôle de la source pour les objets de la base de données, mais nous utilisons les outils de redgate pour mettre à jour notre base de données de production (SQL compare), ce qui est très pratique et nécessite peu de travail.
Question
Comment gérez-vous les objets de la base de données ? J'aime les avoir sous contrôle de source (et, comme nous utilisons GIT, j'aimerais pouvoir gérer les conflits de fusion dans les scripts, plutôt que dans la base de données), mais je vais avoir du mal à dépasser la facilité d'utilisation de SQL compare pour mettre à jour la base de données.
Je ne veux pas vraiment que nous mettions à jour les scripts dans GIT et que nous utilisions ensuite SQL compare pour mettre à jour la base de données de production à partir de notre base de données DEV, car je préfère avoir "une seule version de la vérité", mais je ne veux pas vraiment me lancer dans la réécriture d'un logiciel personnalisé pour regrouper l'ensemble des scripts.
Je pense que Visual Studio Database Edition peut faire quelque chose de similaire, mais je ne suis pas sûr que nous ayons le budget pour cela.
Je suis sûr que cette question a déjà été posée à maintes reprises, mais je n'arrive pas à trouver une réponse qui semble correspondre à ce que je cherche. La question est similaire à celle-ci, mais pas tout à fait la même :
Quelles sont les meilleures pratiques pour les scripts de base de données sous contrôle de code ?
J'ai lancé une prime, car je souhaite recueillir quelques avis supplémentaires - les réponses ici sont bonnes, mais je pense qu'il devrait y avoir un moyen plus simple.
Merci pour toutes ces excellentes réponses - elles ont toutes leurs mérites, je vais donc prendre le vote le plus élevé, mais je vous remercie pour tous vos commentaires.
0 votes
Voir aussi par exemple stackoverflow.com/questions/927578/schema-patches-practices/
0 votes
@aragrid - réponse intéressante, bien qu'elle semble ajouter une couche de complexité à ce que nous avons actuellement. Je peux voir comment cela pourrait être utile, mais nous sommes une boutique assez petite, donc je risque d'avoir quelques difficultés à vendre cela.