2009-12-02 13 views
3

Pour mon application, je dois prendre en charge les scénarios de mise à jour et la base de données peut être affectée.Version du schéma de base de données SQL Server et mise à jour

Je veux être en mesure de mettre à jour d'une ancienne version à la plus récente sans installer de versions intermédiaires. Par exemple. Supposons que j'ai la version A (la plus ancienne), B (intermédiaire) et C (nouvelle version). Je veux pouvoir mettre à jour la version A directement vers la version C. Pour les fichiers d'application, c'est simple, je remplace juste l'ancien par le nouveau. Cependant, pour la base de données, je ne souhaite pas générer un script SQL pour changer le schéma de base de A directement en C, mais plutôt appliquer un script pour changer le schéma de A en B et de B en C.

Comment puis-je stocker la version de base de données pour une base de données SQL Server? Y at-il une propriété spéciale que je peux définir, au lieu d'implémenter une table de version? Dans mon code (.NET) je veux lire la version de la base de données et en conséquence exécuter les scripts SQL de mise à jour dans le bon ordre.

je vais utiliser les deux SQL Server 2005 et SQL Server 2008.

Répondre

7

J'utilise les propriétés étendues de base de données, voir Version Control and your Database:

SELECT [value] 
    from ::fn_listextendedproperty (
     'MyApplication DB Version', 
     default, default, default, default, default, default); 

...

EXEC sp_updateextendedproperty 
    @name = N'MyApplication DB Version', @value = '1.2'; 
GO 
+1

cool – Murph

2

Cela dépend de votre version de SQL Server que vous utilisez.

Je ne crois pas qu'une version de base de données est une propriété intégrée d'une base de données, mais vous pouvez probablement utiliser une propriété étendue.

Personnellement, je créerais ma propre table de version, car cela vous permettrait d'associer plus de métadonnées avec elle.

3

Collez une table de version dans, c'est simple, efficace, et pour le passé, euh, bien c'est plus de 10 ans qu'il a travaillé un régal pour moi.

J'ai écrit ce en réponse à une autre question here

0

Vous pouvez ajouter une table enregistre la version actuelle. Ensuite, exécutez tous les scripts de mise à niveau, mais les scripts doivent être écrits de telle manière qu'ils ne s'exécutent pas si la version actuelle est supérieure à la version attendue par le script.

De cette manière, quelle est la version actuelle du schéma de base de données? Les scripts n'apporteront que des modifications qui n'ont pas encore été apportées au schéma.

Ici vous pouvez trouver des procédures stockées qui réduisent considérablement les scripts de mise à niveau d'effort d'écriture: (! Appris quelque chose de nouveau) How to Maintain SQL Server Database Schema Version