Il n'y a pas de réponse générique sur la façon de faire des 'changements' sans temps d'arrêt. La réponse dépend vraiment d'un cas à l'autre, en fonction de ce que sont exactement les changements. Certaines modifications ont un impact minime (par exemple, l'ajout de colonnes aux tables existantes sans modification de la taille des données, comme une nouvelle colonne nullable qui augmente la taille du bit nul) et D'autres changements vont détruire le temps d'arrêt (toute opération qui va changer la taille des données forcera et indexera reconstruire et verrouiller la table pour la durée). Certains changements sont impossibles à appliquer sans temps d'arrêt * significatif *. Je connais des cas où les modifications étaient appliquées en parallèle: une copie de la base de données est créée, la réplication est configurée pour la garder à jour, puis la copie est changée et synchronisée, enfin les opérations sont déplacées vers la copie modifiée qui devient la base de données master. Il ya une présentation au PASS 2009 given by Michelle Ufford qui mentionne comment godaddy a traversé un tel changement qui a duré semaines.
Mais, à une échelle inférieure, doit appliquer les modifications via un script bien testé et mesurer l'impact sur l'évaluation du test.
Mais la vraie question est: est-ce que cela va être le dernier changements que vous faites jamais au schéma? Enfin, vous avez découvert le schéma parfait pour l'application et la base de données de production ne changera jamais? Félicitations, une fois que vous aurez réussi, vous pourrez vous reposer. Mais de façon réaliste, vous allez faire face au même problème en 6 mois. le vrai problème est votre processus de développement, avec les développeurs et apporter des modifications à partir de SSMS ou de VS Server Explored directement dans la base de données.Votre processus de développement doit faire un effort conscient pour adopter une stratégie de changement de schéma basée sur des versions et des scripts T-SQL, comme celui décrit dans Version Control and your Database.
Est-ce que votre question "comment différencier deux bases de données pour trouver les changements" ou est-ce "comment appliquer les changements connus"? – tpdi
@ TPDI: la question est de savoir comment résoudre le problème, donc je suppose à la fois "trouver et maintenir les changements" et "appliquer les changements". C'est pourquoi j'ai accepté la réponse qui couvre les deux. – Marek