Comment contrôler la version des bases de données SQL Server?
J'ai des bases de données SQL Server et faire des changements en eux. Quelques tables de base de données les enregistrements qui commencent dossiers exigés mon application à exécuter. Je voudrais faire un contrôle de version de la base de données et ces enregistrements (lignes). Est-il possible de faire cela et le bundle de version SVN de contrôle que j'ai pour mon code source ou existe-il d'autres solutions? Je souhaiterais accomplir ce pour être en mesure de revenir à la version précédente de la base de données et de comparer les évolutions entre la base de données des révisions. Ce serait bien si les outils sont libres, open source ou pas très cher.
Mon environnement Visual C# Express, SQL Server 2008 Express et Tortoise SVN.
source d'informationauteur Tomasz Smykowski | 2009-03-23
Vous devez vous connecter pour publier un commentaire.
Nous avons juste commencé à faire les opérations suivantes sur certains de nos projets, et il semble fonctionner assez bien, pour le remplissage de "statique" des tables.
Nos scripts de suivre un modèle où une table temporaire est construit, et est ensuite rempli avec ce que nous voulons le vrai tableau de ressembler. Nous ne mettons, lisible par les valeurs (c'est à dire on ne comprend pas l'IDENTITÉ/GUID colonnes). Le reste du script prend le temp de table et effectue approprié INSERT/UPDATE/DELETE pour faire de la "vraie" table ressembler à la table temp. Lorsque nous devons changer cette "statique" des données, tout ce que nous avons à mettre à jour la population de la table temporaire. Cela signifie que la Comparaison entre les versions fonctionne comme prévu, et la restauration des scripts sont aussi simple que d'obtenir une version antérieure à partir de la source de contrôle.
Les INSERT/UPDATE/Delete seulement être écrit une fois. En fait, nos scripts sont un peu plus compliquées, et de disposer de deux jeux de tour de validation avant la DML. Un ensemble de valider le temp des données de la table (c'est à dire que nous n'allons pas violer les contraintes en essayant de rendre la base de données ressemblent à la table temporaire). L'autre de valider le temp de la table et la base de données cible (c'est à dire que les clés étrangères sont disponibles).
Réponse tardive mais je l'espère utile à d'autres lecteurs
Je peux suggérer à l'aide de la SSMS complément appelé ApexSQL de Contrôle de Source. En utilisant ce module, les développeurs peuvent facilement mapper des objets de base de données avec le système de contrôle de source via l'assistant directement à partir de SSMS. Il inclut le support de Git, TFS, Mercurial, Subversion, TFS (y compris en Ligne de Visual Studio) et d'autres systèmes de Contrôle de Source. Il inclut également le support de la source de contrôle de données Statiques (de sorte que vous pouvez le contrôle de version enregistre aussi).
Après le téléchargement et l'installation de ApexSQL Contrôle de code Source, il suffit de cliquez-droit sur la base de données que vous voulez de contrôle de version et accédez à ApexSQL de Contrôle à la Source des sous-menus dans SSMS. Cliquez sur le “Lien de base de données à la source” et sélectionnez le système de contrôle de source et la base de données de modèle de développement, par exemple:
Après cela, vous pouvez exclure des objets que vous ne voulez pas être lié à la source de contrôle. Il est possible d'exclure des objets par le propriétaire ou le type.
Sur l'étape suivante, vous serez invité à fournir les informations de connexion pour la source de contrôle du système de gestion:
Une fois fait, cliquez sur le bouton “Terminer” et le “centre d'Action” fenêtre apparaît, proposant des objets qui seront engagés pour le dépôt (ce qui est, par défaut, si le dépôt est vide).
Une fois la base de données a été liée à la source de contrôle, toutes les opérations qui peuvent être exécutées à partir d'une source de contrôle du client sera disponible à partir de l'Objet “volet” Explorateur. Ceux-ci contiennent:
Vous pouvez lire cet article pour plus d'informations: http://solutioncenter.apexsql.com/sql-source-control-reduce-database-development-time/
Données statiques de soutien vient d'être ajouté à SQL Source de Contrôle de la 2.0, actuellement disponible en version bêta. Plus d'informations sur la façon d'essayer ce qui peut être trouvé ici:
http://www.red-gate.com/messageboard/viewtopic.php?t=12298
Il y est un logiciel gratuit de microsoft produit appelé Base De Données De L'Assistant De Publication que vous pouvez utiliser pour écrire le script de la base de données (schéma et les données). Il est idéal pour prendre des instantanés de l'état actuel de la bd et vous permettra de recréer à partir de zéro, à tout point de
Pour la base de données (schéma) gestion des versions, nous utilisons les propriétés personnalisées, qui sont ajoutés à la base de données lorsque le programme d'installation est exécuté. Le contenu de ces scripts est généré avec nos scripts de compilation.
Le script pour définir les propriétés ressemble à ceci:
Vous pouvez obtenir une version de SQL Management Studio for SQL Server Express. Je crois que vous serez capable de l'utiliser pour produire des scripts du schéma de votre base de données. Je pense que cela va laisser vous permet de créer des scripts à la main pour insérer le départ des enregistrements.
Ensuite, mettez tous les scripts dans le contrôle de source, avec un maître de script qui s'exécute les scripts individuels dans l'ordre correct.
Vous serez en mesure d'exécuter des diffs à l'aide de windiff (gratuit avec Visual Studio SDK), ou d'autre Au-Delà De Comparer est peu coûteux, et une grande diff/merge/outil de synchronisation.
MS Visual Studio Team System pour les concepteurs de bases de données dispose de fonctionnalités pour générer facilement créer des scripts pour l'ensemble du schéma. Le seul inconvénient est le coût!
Avez-vous envisagé d'utiliser des Infrasons?
Vous devriez plutôt utiliser DB spécifiques de contrôle de version.
http://msdn.microsoft.com/en-us/library/ms189050.aspx
- Je utiliser
bcp
pour cela (en vrac chargement de l'utilitaire, partie d'une norme d'installation de SQL Server, Express edition inclus).Chaque table avec les besoins en données d'un fichier de contrôle
Table.ctl
et un fichier de donnéesTable.csv
(ce sont des fichiers texte qui peuvent être générés à partir d'une base de données existante à l'aide debcp
). Comme les fichiers de texte, ceux-ci peuvent très facilement être versionnés.Dans le cadre de ma génération lots (voir ma réponse il y a pour plus d'informations), je itérer sur chaque fichier de contrôle comme ceci :
Une limitation actuelle de ce script est que le nom du fichier doit être le nom de la table, qui peut ne pas être possible si le nom de la table contient des caractères spéciaux.
Ce projet a un bon exemple de déployer et de restauration