Existe-t-il un système de contrôle de version pour les modifications de la structure de la base de données ?

Je rencontre souvent le problème suivant.

Je travaille sur certaines modifications d'un projet qui nécessitent de nouvelles tables ou colonnes dans la base de données. J'effectue les modifications de la base de données et je continue mon travail. Habituellement, je me souviens d'écrire les modifications afin qu'elles puissent être répliquées sur le système en direct. Cependant, je ne me souviens pas toujours de ce que j'ai changé et je ne me souviens pas toujours de l'écrire.

Donc, je fais un push vers le système en direct et j'obtiens une grosse erreur évidente qu'il n'y a pas de NewColumnX, ugh.

Même s'il ne s'agit pas de la meilleure pratique dans cette situation, existe-t-il un système de contrôle de version pour les bases de données ? Je ne me soucie pas de la technologie de base de données spécifique. Je veux juste savoir s'il en existe un. Si cela fonctionne avec MS SQL Server, tant mieux.

请先 登录 后评论

4 réponses

Ryan Fox

La plupart des moteurs de base de données devraient prendre en charge le vidage de votre base de données dans un fichier. Je sais que MySQL le fait, de toute façon. Ce sera juste un fichier texte, vous pourrez donc le soumettre à Subversion, ou à tout ce que vous utiliserez. Il serait également facile d'exécuter un diff sur les fichiers.

请先 登录 后评论
hamishmcn

J'écris mes scripts de publication de base de données en parallèle avec le codage, et je conserve les scripts de publication dans une section spécifique au projet dans SS. Si j'apporte une modification au code qui nécessite une modification de la base de données, je mets à jour le script de publication en même temps. Avant la publication, j'exécute le script de publication sur une base de données de développement propre (copiée de la structure de la production) et j'effectue mes tests finaux dessus.

请先 登录 后评论
steevc

En l'absence d'un VCS pour les changements de table, je les ai consignés dans un wiki. Au moins, je peux voir quand et pourquoi cela a été changé. C'est loin d'être parfait car tout le monde ne le fait pas et nous utilisons plusieurs versions de produits, mais c'est mieux que rien.

请先 登录 后评论
Mike Farmer

Jetez un œil au package oracle DBMS_METADATA.

En particulier, les méthodes suivantes sont particulièrement utiles :

  • DBMS_METADATA.GET_DDL
  • DBMS_METADATA.SET_TRANSFORM_PARAM
  • DBMS_METADATA.GET_GRANTED_DDL

Une fois que vous êtes familiarisé avec leur fonctionnement (assez explicite), vous pouvez écrire un script simple pour vider les résultats de ces méthodes dans des fichiers texte pouvant être placés sous contrôle de code source. Bonne chance !

Je ne sais pas s'il existe quelque chose d'aussi simple pour MSSQL.

请先 登录 后评论