2

Je suis novice en programmation C# et j'y viens récemment en travaillant avec Ruby on Rails. En RoR, je suis habitué à pouvoir écrire des migrations de schémas pour la base de données. J'aimerais pouvoir faire quelque chose de similaire pour mes projets C#/SQLServer.Comment mettre à jour le schéma SQL Server à l'aide de VS 2005?

Un tel outil existe-t-il pour le jeu d'outils VS 2005?

Serait-il judicieux d'utiliser les migrations RoR avec SQL Server directement en dehors de VS 2005? En d'autres termes, je gérerais tous les versions de schéma en utilisant ActiveRecord: Migration from Rails mais rien d'autre.

Si je gère les migrations en dehors de C# et de VS 2005 avec un autre outil, RoR ActiveRecord: la migration est-elle la meilleure chose à utiliser ou y at-il quelque chose qui convient mieux?

+0

Je suis curieux de savoir quelle approche vous avez adoptée à la fin? –

+0

@David J'ai fini par changer d'emploi. Le nouveau travail utilise MySQL. C'est toujours une question pertinente pour moi, car C# va faire partie de la pile technologique. Je n'ai pas encore mis en œuvre une solution dans mon nouvel emploi, mais la première est la liquibase. – Mike

Répondre

0

Je suis heureux avec DBDeploy.NET pour gérer notre base de données versioning. Mon projet actuel utilise C# + SQL 2008. DBDeploy n'est pas intégré à Visual Studio mais je suppose que vous pouvez le faire avec certaines entrées d'outils externes personnalisées dans l'EDI.

Il existe d'autres outils qui fonctionnent certainement. Je ne suis pas familier avec Ruby ActiveRecord: Migration mais si vous êtes déjà expérimenté dans l'utilisation de cet outil particulier, pourquoi ne pas s'en tenir à cela? En ce qui concerne les versions de base de données/migrations à l'intérieur de Visual Studio, je crois que vous aurez besoin de mettre à niveau vers la base de données Professional Edition (coût supplémentaire pour cette dernière version que j'ai cochée).

En résumé, je voudrais aller avec ce que vous savez. La plupart des outils gratuits pour DB versioning sont encore un peu à moitié cuits à l'heure actuelle à mon humble avis. Si vous souhaitez plus d'informations sur DBDeploy.NET, vous pouvez lire le projet d'origine à partir duquel il a été porté - De plus, gardez à l'esprit que l'outil DBDeploy est multi-plateforme (prend en charge de nombreux systèmes de base de données, pas seulement SQL Server & Oracle) et open-source.

0

Pour la distribution d'applications, mon approche préférée est en fait une solution interne: Version Control and your Database. J'utilise les propriétés étendues de la base de données pour stocker la version de schéma sur disque actuellement déployée, puis exécute une matrice de mise à niveau interne qui maintient une correspondance entre la version sur disque => mise à niveau vers la version suivante. Au démarrage, l'application exécute les étapes du tableau de mise à niveau jusqu'à ce que la version sur disque corresponde à la version actuelle de l'application. Donc, une mise à niveau passe par toutes les versions intermédiaires. Le déploiement d'un nouveau site (un nouvel emplacement) passe par toutes les versions de schéma, créant et supprimant parfois des objets qui ne sont plus utilisés. Cela peut sembler bizarre, mais à la fin de l'application peut être déployée sur version précédente. Si un client a un schéma depuis 3 ans, tout le monde a oublié ce qu'il contient, l'application sait comment le mettre à jour, toujours, ce qui est génial.

Je privilégie cette approche par rapport aux outils de comparaison diff (par exemple, intégration de projet VS DB) car elle est testable et offre un meilleur contrôle sur les étapes exactes de toute mise à niveau. Les outils de diffusion font toutes sortes d'actions discutables, comme copier des tables et renommer, ce qui ne marche pas pour les déploiements mesurant + 1 To (que mon application doit gérer).

Si la taille de données que vous attendez est raisonnable petite (< 100 Gb) Je considérerais les outils basés sur les différences.Le déploiement de projet VS DB basé sur vsdbcmd fonctionne correctement dans de telles conditions. En outre, si votre cible de déploiement est un seul emplacement (par exemple, une application Web où il n'y a qu'une seule cible, le site Web db), la possibilité de mettre à niveau toute version précédente perd son attrait.

Questions connexes