Mettre à niveau une application de la couche Données

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Utilisez l'Assistant Mise à niveau de l'application de la couche Données ou bien un script Windows PowerShell pour modifier le schéma et les propriétés d'une application de la couche Données (DAC) actuellement déployée pour qu'ils correspondent à ceux définis dans la nouvelle version de la DAC.

Avant de commencer

La mise à niveau d'une DAC est un processus sur place qui modifie le schéma de la base de données existante de manière à ce qu'il corresponde au schéma défini dans une nouvelle version de la DAC. La nouvelle version de la DAC est fournie dans un fichier de package DAC. Pour plus d’informations sur la création d’un package DAC, consultez Applications de la couche Données.

Choisir les options de mise à niveau DAC

Il existe quatre options de mise à niveau dans le cadre d'une mise à niveau sur place :

  • Ignorer la perte de données : si la valeur est True, la mise à niveau se poursuit même si certaines opérations entraînent une perte de données. Si la valeur est False, ces opérations terminent la mise à niveau. Par exemple, si une table de la base de données active n’est pas présente dans le schéma de la nouvelle DAC, la table est supprimée si la valeur True est spécifiée. Le paramètre par défaut est True.

  • Bloquer sur les modifications : si la valeur est True, la mise à niveau est arrêtée si le schéma de base de données diffère de celui défini dans la DAC précédente. Si la valeur est False, la mise à niveau continue, même si des modifications sont détectées. Le paramètre par défaut est False.

  • Restauration en cas d’échec : si la valeur est True, la mise à niveau est placée dans une transaction ; si des erreurs sont rencontrées, une restauration est tentée. Si la valeur est False, toutes les modifications sont validées à mesure qu’elles sont effectuées et, si des erreurs se produisent, vous devrez peut-être restaurer une sauvegarde de base de données précédente. Le paramètre par défaut est False.

  • Ignorer la validation de stratégie : si la valeur est True, la stratégie de sélection du serveur DAC n’est pas évaluée. Si la valeur est False, la stratégie est évaluée et la mise à niveau se termine en cas d’erreur de validation. Le paramètre par défaut est False.

Limitations et restrictions

Les mises à niveau DAC peuvent uniquement être effectuées dans SQL Database, ou SQL Server 2005 (9.x) Service Pack 4 (SP4) ou version ultérieure.

Prerequisites

Il est prudent d’effectuer une sauvegarde complète de la base de données avant de commencer la mise à niveau. Vous devrez peut-être restaurer la sauvegarde si une mise à niveau rencontre une erreur et ne peut pas restaurer toutes ses modifications.

Avant de commencer la mise à niveau, vous devez effectuer plusieurs actions pour valider le package DAC et les actions de mise à niveau. Pour plus d'informations sur la façon de procéder à ces vérifications, consultez Validate a DAC Package.

  • Nous vous recommandons d’éviter la mise à niveau à l’aide d’un package DAC provenant de sources inconnues ou non approuvées. De tels packages peuvent contenir du code malveillant susceptible d'exécuter un code Transact-SQL indésirable ou de provoquer des erreurs en modifiant le schéma. Avant d'utiliser un package provenant d'une source inconnue ou non approuvée, décompressez la DAC et vérifiez le code, par exemple les procédures stockées ou autre code défini par l'utilisateur.

  • Si des modifications ont été apportées à la base de données active après le déploiement de la dernière version de la DAC, certaines des modifications peuvent empêcher la réussite de la mise à niveau ou être supprimées par la mise à niveau. Vous devez d'abord générer un rapport afin de passer en revue toutes les modifications apportées à la base de données.

  • Il est prudent de générer une liste des modifications apportées au schéma que la mise à niveau effectue et examine la liste des problèmes éventuels.

Le nom d'application dans le package DAC doit correspondre au nom d'application de la DAC actuellement déployée. Par exemple, si la DAC actuelle a un nom d’application de GeneralLedger, vous pouvez uniquement effectuer une mise à niveau à l’aide d’un package DAC avec un nom d’application de GeneralLedger.

Vérifiez que suffisamment d’espace de journal des transactions est disponible pour journaliser toutes les modifications.

Sécurité

Pour améliorer la sécurité, les connexions d'authentification SQL Server sont stockées dans un package DAC sans mot de passe. Lorsque le package est déployé ou mis à niveau, la connexion est créée en tant que connexion désactivée avec un mot de passe généré. Pour activer les connexions, connectez-vous à l’aide d’une connexion avec l’autorisation ALTER ANY LOGIN et utilisez ALTER LOGIN pour activer la connexion et affecter un nouveau mot de passe à communiquer à l’utilisateur. Cela n’est pas nécessaire pour les connexions d’authentification Windows, car SQL Server ne gère pas leurs mots de passe.

Autorisations

Une DAC ne peut être mise à niveau que par les membres des rôles serveur fixes sysadmin ou serveradmin , ou par les connexions situées dans le rôle serveur fixe dbcreator et disposant d'autorisations ALTER ANY LOGIN. La connexion doit être propriétaire de la base de données existante. Le compte d’administrateur système SQL Server intégré nommé sa peut également mettre à niveau une DAC.

Utiliser l’Assistant Mise à niveau de l’application de la couche Données

Pour mettre à niveau une DAC à l'aide d'un Assistant

  1. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur la base de données contenant la DAC à mettre à niveau.

  2. Développez l’option Tâches, puis sélectionnez l’option Mettre à niveau les applications de la couche Données.

  3. Renseignez les boîtes de dialogue de l'Assistant :

    1. Page Introduction

    2. Page Sélectionner un package

    3. Page Détecter les modifications

    4. Options Page

    5. Passer en revue le plan de mise à niveau

    6. Page Résumé

    7. Page Mettre à niveau la DAC

Page Introduction

Cette page décrit les étapes de mise à niveau d'une application de couche Données.

Ne plus afficher cette page. - Activez la case à cocher pour empêcher l’affichage de la page à l’avenir.

Suivant > : passe à la page Sélectionner un package .

Annuler : met fin à l’Assistant sans mettre à niveau la DAC.

Page Sélectionner un package

Utilisez cette page pour spécifier le package DAC contenant la nouvelle version de l’application de la couche Données. La page passe par deux états.

Sélectionner le package DAC

Utilisez l'état initial de la page pour choisir le package DAC à déployer. Le package de la DAC doit être un fichier de package de DAC valide et doit avoir une extension .dacpac. Le nom d'application de la DAC dans le package de DAC doit être le même que le nom d'application de la DAC actuelle.

Package de DAC : spécifie le chemin et le nom de fichier du package DAC qui contient la nouvelle version de l’application de couche Données. Vous pouvez sélectionner le bouton Parcourir à droite de la zone pour accéder à l'emplacement du package de DAC.

Nom de l’application : zone en lecture seule qui affiche le nom d’application de la DAC, attribué au moment de sa création ou de son extraction d’une base de données.

Version : zone en lecture seule qui affiche la version affectée au moment où la DAC a été créée ou extraite d’une base de données.

Description : zone en lecture seule qui affiche la description écrite au moment où la DAC a été créée ou extraite d’une base de données.

< Précédent : renvoie à la page Introduction .

Suivant > : affiche une barre de progression lorsque l’Assistant confirme que le fichier sélectionné est un package DAC valide.

Annuler : met fin à l’Assistant sans mettre à niveau la DAC.

Valider le package DAC

Affiche une barre de progression quand l'Assistant confirme que le fichier sélectionné est un package DAC valide. L’Assistant passe à la page Vérifier la stratégie si le package DAC est validé. Si le fichier n’est pas un package DAC valide, l’Assistant reste sur la page Sélectionner un package DAC. Sélectionnez un autre package DAC valide ou annulez l'Assistant et générez un nouveau package DAC.

Validation du contenu de la DAC : barre de progression qui indique l’état actuel de la validation.

< Précédent : retourne à l’état initial de la page Sélectionner un package .

Suivant > : passe à la version finale de la page Sélectionner un package .

Annuler : met fin à l’Assistant sans déployer la DAC.

Page Détecter les modifications

Utilisez cette page pour signaler les résultats de la vérification de l’Assistant pour les modifications apportées à la base de données qui rendent son schéma différent de la définition de schéma stockée dans les métadonnées DAC dans msdb. Par exemple, si les instructions CREATE, ALTER ou DROP ont été utilisées pour ajouter, modifier ou supprimer des objets de la base de données, après le déploiement d'origine de la DAC. La page affiche d’abord une barre de progression, puis signale les résultats de l’analyse.

Détection des modifications. Cette opération peut prendre quelques minutes : affiche une barre de progression pendant que l’Assistant recherche des différences entre le schéma actuel de la base de données et les objets dans la définition de la DAC.

Résultats de la détection des modifications : - Indique que l’analyse a été effectuée et que les résultats sont signalés ci-dessous.

La base de données DatabaseName n’a pas changé : l’Assistant n’a pas détecté de différences entre les objets définis dans la base de données et leurs équivalents dans la définition de la DAC.

La base de données DatabaseName a changé : l’Assistant a détecté des modifications entre les objets dans la base de données et leurs équivalents dans la définition de la DAC.

Continuez malgré la perte possible de modifications : spécifie que vous comprenez certains objets ou données de la base de données actuelle ne seront pas présents dans la nouvelle base de données et que vous êtes prêt à procéder à la mise à niveau. Vous ne devez sélectionner ce bouton que si vous avez analysé le rapport des modifications et si vous connaissez la procédure à effectuer pour transférer manuellement tous les objets ou données nécessaires dans la nouvelle base de données. Si vous ne savez pas, sélectionnez le bouton Enregistrer le rapport pour enregistrer le rapport de modification, puis sélectionnez Annuler. Analysez le rapport, organisez le transfert de tous les objets et données nécessaires une fois la mise à niveau terminée, puis redémarrez l'Assistant.

Enregistrer le rapport : sélectionnez le bouton pour enregistrer un rapport des modifications détectées par l’Assistant entre les objets de la base de données et leurs équivalents dans la définition DAC. Vous pouvez ensuite passer en revue le rapport pour déterminer si vous devez prendre des mesures une fois la mise à niveau terminée en intégrant certains ou tous les objets répertoriés dans le rapport dans la nouvelle base de données.

< Précédent : retourne à la page Sélectionner le package DAC.

Suivant > : passe à la page Options .

Annuler : met fin à l’Assistant sans déployer la DAC.

Page Options

Utilisez cette page pour sélectionner l'option de restauration en cas de échec de la mise à niveau.

Restauration en cas d’échec : sélectionnez cette option pour placer la mise à niveau dans une transaction, que l’Assistant peut tenter de restaurer si des erreurs se produisent. Pour plus d'informations sur l'option, consultez Choix des options de mise à niveau de la DAC.

Paramètres par défaut : rétablit la valeur par défaut (False) de l’option.

< Précédent : retourne à la page Détecter les modifications .

Suivant > : passe à la page Passer en revue le plan de mise à niveau.

Annuler : met fin à l’Assistant sans déployer la DAC.

Page Vérifier le plan de mise à niveau

Utilisez cette page pour passer en revue les actions effectuées par le processus de mise à niveau. Continuez uniquement lorsque vous êtes certain que la mise à niveau ne créera pas de problèmes.

Les actions suivantes permettront de mettre à niveau la DAC. - Vérifiez les informations affichées pour vous assurer que les actions prises seront correctes. La colonne Action affiche les actions, telles que les instructions Transact-SQL, qui seront exécutées pour effectuer la mise à niveau. La colonne Perte de données contiendra un avertissement si l'action associée risque de supprimer des données.

Actualiser - Actualise la liste des actions.

Enregistrer le rapport d’action - Enregistre le contenu de la fenêtre d’action dans un fichier HTML.

Continuez malgré la perte possible de modifications : spécifie que vous comprenez certains objets ou données de la base de données actuelle ne seront pas présents dans la nouvelle base de données et que vous êtes prêt à procéder à la mise à niveau. Vous ne devez sélectionner ce bouton que si vous avez analysé le rapport des modifications et si vous connaissez la procédure à effectuer pour transférer manuellement tous les objets ou données nécessaires dans la nouvelle base de données. Si vous ne savez pas, sélectionnez le bouton Enregistrer le rapport d’action pour enregistrer le rapport de modification et le bouton Enregistrer les scripts pour enregistrer le script Transact-SQL, puis sélectionnez Annuler. Analysez le rapport et le script, planifiez le transfert des objets et données requis une fois la mise à niveau terminée, puis redémarrez l’Assistant.

Enregistrer les scripts : enregistre les instructions Transact-SQL qui permettront d’effectuer la mise à niveau vers un fichier texte.

Paramètres par défaut : rétablit la valeur par défaut (False) de l’option.

< Précédent : retourne à la page Détecter les modifications .

Suivant > : passe à la page Résumé .

Annuler : met fin à l’Assistant sans déployer la DAC.

Page Résumé

Utilisez cette page pour passer en revue les actions effectuées par l’Assistant lors de la mise à niveau de la DAC.

Les paramètres suivants seront utilisés pour mettre à niveau votre DAC. - Vérifiez les informations affichées pour vous assurer que les actions prises seront correctes. La fenêtre affiche la DAC que vous avez sélectionnée pour être mise à niveau, et le package de DAC qui contient la nouvelle version de la DAC. La fenêtre indique également si la version actuelle de la base de données est identique à la définition DAC actuelle ou si la base de données a changé.

< Précédent : retourne la page Vérifier le plan de mise à niveau.

Suivant > : déploie la DAC et affiche les résultats dans la page Mettre à niveau la DAC .

Annuler : met fin à l’Assistant sans déployer la DAC.

Page Mettre à niveau la DAC

Cette page signale la réussite ou l'échec de l'opération de mise à niveau.

Mise à niveau de la DAC : signale la réussite ou l’échec de chaque action entreprise pour mettre à niveau la DAC. Examinez les informations pour déterminer la réussite ou l'échec de chaque action. Toute action qui a rencontré une erreur a un lien dans la colonne Result . Sélectionnez le lien pour consulter le rapport de d'erreur de cette action.

Enregistrer le rapport : sélectionnez ce bouton pour enregistrer le rapport de mise à niveau dans un fichier HTML. Le fichier signale l'état de chaque action, notamment toutes les erreurs générées par chacune des actions. Le dossier par défaut est un dossier SQL Server Management Studio\DAC Packages dans le dossier Documents de votre compte Windows.

Terminer : met fin à l’Assistant.

Utiliser PowerShell

Pour mettre à niveau une DAC à l’aide de la méthode IncrementalUpgrade() dans un script PowerShell

  1. Créez un objet SMO Server et définissez-le sur l’instance qui contient la DAC à mettre à niveau.

  2. Ouvrez un objet ServerConnection et connectez-vous à la même instance.

  3. Utilisez System.IO.File pour charger le fichier de package DAC.

  4. Utilisez add_DacActionStarted et add_DacActionFinished pour vous abonner aux événements de mise à niveau de la DAC.

  5. Définissez DacUpgradeOptions.

  6. Utilisez la méthode IncrementalUpgrade pour mettre à niveau la DAC.

  7. Fermez le flux de fichier utilisé pour lire le fichier de package DAC.

Exemple (PowerShell)

L’exemple suivant met à niveau une DAC nommée MyApplication sur une instance par défaut du moteur de base de données, à l’aide d’une nouvelle version DAC dans un package MyApplication2017.dacpac.

## Set an SMO Server object to the default instance on the local computer.
CD SQLSERVER:\SQL\localhost\DEFAULT
$srv = get-item .
  
## Open a Common.ServerConnection to the same instance.
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)
$serverconnection.Connect()
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)
  
## Load the DAC package file.
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)
  
## Subscribe to the DAC upgrade events.
$dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})
$dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})
  
## Upgrade the DAC and close the package.
$dacName  = "MyApplication"
  
## Set the upgrade options.
$upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions
$upgradeProperties.blockonchanges = $true
$upgradeProperties.ignoredataloss = $false
$upgradeProperties.rollbackonfailure = $true
$ upgradeProperties.skippolicyvalidation = $false
  
## Upgrade the DAC
$dacstore.IncrementalUpgrade($dacName, $dacType, $upgradeProperties)
## Close the package file.
$fileStream.Close()

Voir aussi