Garder l'environnement de database différent synchronisé

À l'heure actuelle, nous poussons manuellement les changements de notre environnement DEV SQL vers le TEST et la production (en utilisant Schema compare dans Visual Studio, plus un script que nous créons en apportant des modifications au DEV), mais cela prend beaucoup de time et d'erreurs.

Nous nous demandions s'il y avait une meilleure façon de procéder et comment devrions-nous mettre cela en œuvre.

J'ai lu à propos d'utiliser peut-être le versioning (comment cela fonctionnerait?), Ou peut-être utiliser le contrôle SQL Source de RED GATES (mais peut-il être utilisé pour pousser les changements au test, ou est-il seulement utilisé pour suivre les changements locaux? )

Nous voulons un moyen fiable de mettre à jour nos servers TEST & Production afin que datatables ne soient pas corrompues / perdues … Nous utilisons SQL Server 2008 R2 et Visual Studio 2012.

Nous commençons un nouveau projet, il est donc time de changer! Merci pour votre time!

    Un moyen simple de le faire serait d'avoir une table de version simple dans la database avec une ligne et une colonne qui stocke le numéro de version.

    A chaque fois que vous apportez des modifications à dev, créez le script sql incrémentiel. Avoir un script maître basé sur la version actuelle de la database appelle les scripts sql incrémentiels nécessaires pour mettre à niveau le schéma vers la dernière version.

    Faites attention de supprimer des colonnes, de changer les types de colonnes ou de réduire la taille des colonnes, par exemple varchar (100) à varchar (10) dans vos scripts incrémentaux, car cela pourrait entraîner une perte de données si elle n'est pas correctement planifiée.

    Les scripts incrémentiels devraient être idempotents, ils pourraient être exécutés encore et encore, juste au cas où le db se bloque lors de la mise à niveau.

    Bien qu'il y ait de nombreux avantages à utiliser SQL Source Control (et j'aimerais que vous y alliez, car je suis le chef de produit!), Son but est limité à la gestion des versions et non à la gestion et au deployment dans vos différents environnements. L'outil Red Gate correct pour cela serait Deployment Manager.

    http://www.red-gate.com/delivery/deployment-manager/

    Il y a un blog géré par l'équipe de projet Deployment Manager ici, qui devrait vous donner une idée de l'orientation de l'outil:

    http://thefutureofdeployment.com/

    Est-ce que Schema Compare dans VS a CLI? Si c'est le cas, vous pouvez probablement l'automatiser pour l'exécuter plusieurs fois dans la journée. Sinon, vous pouvez essayer d'utiliser d'autres outils tiers prenant en charge la CLI, tels que ApexSQL Diff pour le schéma et ApexSQL Data Diff pour la synchronisation des données.