Share via


Mise à niveau des applications de la couche Données

Le processus de mise à niveau d'une application de la couche Données (DAC) déployée sur une nouvelle version est plus simple que d'utiliser des scripts pour déployer des bases de données ou des modifications de base de données. Le développeur de base de données doit seulement générer un package DAC qui décrit le schéma et les propriétés de la nouvelle version. Le processus de mise à niveau de la DAC compare le nouveau schéma au schéma déployé existant, puis effectue dynamiquement les actions nécessaires pour passer au nouveau schéma.

Processus de mise à niveau

Le processus de mise à niveau des applications de la couche Données SQL Server convertit une DAC déployée en une version différente de la même application. Par exemple, une mise à niveau de la version 1.0 vers la version 2.0 de Finance. Les étapes suivantes illustrent un processus de déploiement simple :

  • Un développeur de base de données termine le développement d'une DAC de Finance version 1.0, puis génère un package DAC FinanceVersion1.dacpac.

  • Un administrateur de base de données déploie la DAC Finance 1.0 en production. L'instance de production du moteur de base de données a maintenant une DAC déployée qui a le nom d'application Finance, la version 1.0 et une base de données associée nommée Finance.

  • Le développeur de base de données commence ensuite à travailler sur la version suivante et une fois le développement terminé, il génère un FinanceVersion2.dacpac.

  • L'administrateur de base de données planifie le processus de mise à niveau de la DAC. Pour cela, il sauvegarde la base de données Finance. Il passe en revue le contenu du package DAC, ainsi que le rapport des actions devant être entreprises lors de la mise à niveau, afin de garantir qu'ils ne poseront pas de problème au niveau de la base de données de production.

  • L'administrateur de base de données effectue alors la mise à niveau de la DAC, en indiquant à la fois la DAC version 1.0 actuellement déployée et le package DAC version 2.0. Il existe deux options d'exécution de la mise à niveau :

    • Effectuer une mise à niveau sur place, à l'aide d'un script Windows PowerShell qui appelle la méthode IncrementalUpgrade() de la DAC. La mise à niveau sur place modifie le schéma de la base de données existante de façon à ce qu'il corresponde à celui défini dans la nouvelle version de la DAC.

    • Effectuer une mise à niveau côte à côte à l'aide de la méthode Upgrade() de la DAC, ou à l'aide de l'Assistant Mise à niveau d'applications de la couche Données. La mise à niveau côte à côte crée une nouvelle base de données à l'aide du nouveau schéma et transmet les données de la base de données d'origine vers la nouvelle base de données.

  • Une fois la mise à niveau terminée, la DAC mise à niveau possède toujours le nom d'application Finance et une base de données associée nommée Finance, en revanche, la version de la DAC est désormais 2.0.

Modification des bases de données après le déploiement

Une base de données dérive de la DAC qui lui est associée si les modifications sont apportées à la base de données en utilisant un autre mécanisme que la mise à niveau de la DAC. Les exemples incluent l'utilisation d'une instruction CREATE TRIGGER pour ajouter un nouveau déclencheur, ou l'utilisation d'une instruction ALTER TABLE pour modifier la structure d'une table. Certains types de modifications peuvent empêcher la réussite du processus de mise à niveau de la DAC, en fonction des options de mise à niveau spécifiées. Les modifications seront également absentes de la base de données mise à niveau.

L'opération de mise à niveau de la DAC vérifie les différences entre le schéma de la base de données actuelle et la définition de la DAC stockée dans la base de données système msdb. Si elle trouve des différences, elle émet une boîte de dialogue d'avertissement qui répertorie les différences. Vous ne devez poursuivre la mise à niveau qu'après avoir analysé les différences signalées et mis en place des processus ou des scripts pour transférer les objets ou les données que la mise à niveau ne peut pas transférer mais qui sont nécessaires dans le nouveau système.

Une fois la mise à niveau terminée, la base de données contient tous les objets définis dans la nouvelle version de la DAC, au format spécifié dans la nouvelle DAC. Dans la plupart des cas, il s'agira du format requis par la version des applications associées à la nouvelle version de la DAC et de la base de données. Analysez soigneusement le rapport des modifications de la mise à niveau et ne transférez que des objets nécessaires vers le nouveau système. Par exemple, ce n'est peut-être pas une erreur si plusieurs objets présents dans la DAC et la base de données actuelles sont absents de la nouvelle DAC. Ils peuvent être associés à des fonctionnalités qui ont été supprimées ou reconçues dans les nouvelles versions des applications qui utilisent la DAC.

Pour les mises à niveau sur place, les objets modifiés ne sont pas conservés. Vous devez enregistrer les définitions et les données relatives aux objets avant de démarrer la mise à niveau. En ce qui concerne les mises à niveau côte à côte, les objets et les données sont conservés dans la base de données d'origine renommée. Tous les objets modifiés doivent être transférés manuellement vers la nouvelle base de données.

Pour plus d'informations sur la réalisation de scripts pour transférer des objets vers la nouvelle base de données, consultez Procédure : générer un script (SQL Server Management Studio).

Les projets DAC peuvent spécifier des scripts de prédéploiement et de post-déploiement. Il s'agit de scripts Transact-SQL pouvant effectuer n'importe quelle action, y compris la création d'objets non pris en charge par la DAC. Si la DAC d'origine contenait un script de post-déploiement ayant créé des objets non pris en charge par la DAC, ces objets doivent être mis à niveau séparément à l'aide d'un mécanisme permettant à ces objets d'être supprimés lors de la mise à niveau sur place, ou d'être conservés dans la base de données d'origine lors d'une mise à niveau côte à côte.

Mise à niveau sur place

Une mise à niveau sur place exécute les actions suivantes :

  • Elle vérifie que la DAC déployée et le package DAC possèdent tous deux le même nom d'application (par exemple, qu'ils s'appellent tous les deux Finance). Elle évalue également si l'instance du moteur de base de données répond aux besoins spécifiés dans la stratégie de sélection du serveur (si définie) dans la nouvelle version de la DAC, et si la base de données existante contient des objets non pris en charge par la DAC.

  • Elles apportent toutes les modifications, telles que les instructions CREATE, ALTER et DROP, qui sont requises pour faire correspondre le schéma de la base de données à celui défini dans la nouvelle version de la DAC.

Si l'option Ignorer les pertes de données a la valeur True, la mise à niveau de la DAC pourra entreprendre des actions menant à la suppression des données. Par exemple, si une table est présente dans la base de données actuelle mais pas dans le schéma de la nouvelle DAC, la table sera supprimée par la mise à niveau. Avant d'exécuter cette opération, l'administrateur de base de données doit archiver toutes les donnée dont il pourrait avoir besoin après la mise à niveau.

Les mises à niveau sur place sont prises en charge à la fois par SQL Azure et les instances du Moteur de base de données. Les mises à niveau sur place nécessitent DAC Framework 1.1, ainsi qu'un nouvel assistant de mise à niveau de la DAC, lesquels sont inclus dans SQL Server 2008 R2 Service Pack 1 (SP1).

Mise à niveau côte à côte

Les mises à niveau côte à côte ne sont pas prises en charge sur SQL Azure et ne le seront pas non plus dans la prochaine version de SQL Server. Le mécanisme de mise à niveau recommandé est la mise à niveau sur place, incluse dans SQL Server 2008 R2 SP1.

Une mise à niveau côte à côte exécute les actions suivantes :

  • Elle vérifie que la DAC déployée et le package DAC possèdent tous deux le même nom d'application (par exemple, qu'ils s'appellent tous les deux Finance). Elle évalue également si l'instance du moteur de base de données répond aux besoins spécifiés dans la stratégie de sélection du serveur (si définie) dans la nouvelle version de la DAC, et si la base de données existante contient des objets non pris en charge par la DAC.

  • Elle déploie la nouvelle version de la DAC à partir du package DAC. Cela crée une base de données avec un nom temporaire.

  • Il configure la base de données d'origine en lecture seule, si ce n'est pas déjà le cas, et copie les données dans la nouvelle base de données.

  • Si la base de données d'origine était en mode lecture seule, la nouvelle base de données est configurée en lecture seule.

  • La base de données d'origine est renommée en ajoutant une chaîne à la fin du nom de la base de données.

  • Le nom de la base de données d'origine est attribué à la nouvelle base de données.

  • Une fois que l'administrateur de base de données a confirmé que la nouvelle base de données fonctionne correctement, la base de données d'origine peut être archivée.

Les modifications de la base de données peuvent également affecter le transfert des données d'une table vers la nouvelle base de données. Les tables peuvent être dans les états suivants concernant les modifications de base de données :

  • La structure de la table est la même dans les trois emplacements : la définition de la DAC actuelle dans msdb, la base de données actuelle et la nouvelle DAC. La table sera présente dans la nouvelle base de données et l'opération de mise à niveau transférera les données vers la nouvelle base de données. Le transfert est effectué à l'aide d'une instruction INSERT basée sur une instruction SELECT de l'ancienne table.

  • La table n'existe pas dans la définition de la DAC ou base de données actuelle, mais est définie dans la nouvelle DAC. La table sera présente dans la nouvelle base de données, mais n'aura pas de données parce qu'il n'y a pas de données existantes à transférer.

  • La table n'existe pas dans la définition de la DAC actuelle, mais existe dans la base de données actuelle et dans la nouvelle DAC. La table sera présente dans la nouvelle base de données, mais l'opération de mise à niveau ne transférera pas les données vers la nouvelle base de données. Transférez manuellement les données une fois la mise à niveau terminée.

  • La table existe dans la définition de la DAC et la base de données actuelles, mais pas dans la nouvelle DAC. La table n'existera pas dans la nouvelle base de données. Si la table est nécessaire dans le nouveau système, créez manuellement la table et transférez les données une fois la mise à niveau terminée.

  • La table existe dans les trois emplacements, mais la structure de la table dans la définition de la DAC et la base de données actuelles est différente de la structure de la table dans la nouvelle DAC. La table sera présente dans la nouvelle base de données avec la structure définie dans la nouvelle DAC.

    • Si les noms de colonne et de table ne correspondent pas, l'opération de mise à niveau signalera qu'elle n'a pas transféré les données. Transférez manuellement les données une fois la mise à niveau terminée.

    • Si les noms de colonne et le nom de la table sont les mêmes, l'opération de mise à niveau tentera de transférer les données. Si le type de données d'une ou plusieurs colonnes a changé et n'est pas compatible, l'instruction INSERT échouera, ce qui provoquera l'annulation du processus de mise à niveau.

Vous pouvez utiliser n'importe quel mécanisme pour transférer les données dans la nouvelle version de la table. Vous pouvez utiliser une instruction INSERT qui fait une sélection dans la version ancienne de la table. Vous pouvez également utiliser l'une des techniques d'insertion en bloc présentées dans Importation et exportation de données en bloc.

Historique des modifications

Mise à jour du contenu

Explication des mises à niveau sur place introduites dans DAC Framework 1.1. Suppression du contenu redondant des autres rubriques.

SQL Server 2008 R2 SP1 assure la prise en charge complète des mises à niveau sur place, y compris DAC Framework 1.1 et un nouvel Assistant de mise à niveau.