sql-server - niveau - sql server la base de données est inaccessible.(objectexplorer)




Comment puis-je mettre à jour une base de données SQL Server? (4)

Je fais ça:

Créez une table de schéma:

CREATE TABLE [dbo].[SchemaVersion](
    [Major] [int] NOT NULL,
    [Minor] [int] NOT NULL,
    [Build] [int] NOT NULL,
    [Revision] [int] NOT NULL,
    [Applied] [datetime] NOT NULL,
    [Comment] [text] NULL)

Mettre à jour le schéma:

INSERT INTO SchemaVersion(Major, Minor, Build, Revision, Applied, Comment)
VALUES (1, 9, 1, 0, getdate(), 'Add Table to track pay status')

Obtenir la version du schéma de base de données:

SELECT TOP 1 Major, Minor, Build from SchemaVersion
ORDER BY Major DESC, Minor DESC, Build DESC, Revision DESC

Adapté de ce que j'ai lu sur Coding Horror

Je dois mettre des versions sur une base de données SQL Server 2005 et les rendre accessibles à partir d'une application .NET. Ce que je pensais utiliser une propriété étendue sur la base de données avec un nom de 'version' et bien sûr la valeur serait la version de la base de données. Je peux ensuite utiliser SQL pour y arriver. Ma question est-ce que cela sonne comme un bon plan ou existe-t-il un meilleur moyen d'ajouter des versions à une base de données SQL Server?

Supposons que je suis incapable d'utiliser une table pour contenir les métadonnées.


Nous utilisons les propriétés étendues comme vous l'avez décrit et cela fonctionne très bien.

Je pense qu'avoir une table est exagéré. Si je veux suivre les différences dans mes bases de données, j'utilise le contrôle de source et garde tous les scripts de génération db dedans.

J'ai également utilisé certains outils de diagramme ER pour m'aider à suivre les changements dans les versions DB. C'était en dehors de l'application, mais cela m'a permis de voir rapidement ce qui a changé.

Je pense que c'était CASEStudio, ou quelque chose comme ça.


La meilleure façon de faire est d'avoir 2 procédures: un en-tête pour contrôler ce qui est inséré et valide un pied de page pour insérer les données si la version est bonne ou non. Le corps contiendra vos scripts.

Vous avez besoin d'un wrapper qui encapsulera votre script et enregistrera toutes les informations: dans la version précédente, le numéro de script a été appliqué, applyby, applydate date, le résultat de la sortie "a échoué ou a réussi".


J'utilise une table dédiée similaire à la solution de Matt. En plus de cela, les alteurs de base de données doivent vérifier la version actuelle avant d'appliquer des modifications au schéma. Si la version actuelle est plus petite que prévu, le script se termine par une erreur fatale. Si la version actuelle est plus grande que prévu, le script ignore l'étape en cours car cette étape a déjà été effectuée dans le passé.

Voici la solution complète avec des exemples et des conventions dans l'écriture de scripts alt de base de données: Comment gérer la version du schéma de base de données SQL Server





database-versioning