Partager via


Vue d'ensemble de la génération et du déploiement d'une base de données

Mise à jour : novembre 2007

Pour déployer une nouvelle base de données ou des modifications apportées à une base de données existante à partir de votre projet de base de données sur un serveur de base de données, vous devez générer le projet de base de données, puis le déployer sur votre serveur de base de données. L'étape de génération assemble les scripts de définition d'objets et tous les scripts de prédéploiement ou de post-déploiement en un seul script de compilation, en utilisant les propriétés que vous définissez dans la fenêtre de propriétés du projet. L'étape de déploiement assemble le script, puis exécute ce script de compilation sur la cible que vous spécifiez. L'action de nettoyage de génération supprime simplement tous scripts de compilation existants. Si vous voulez mettre à jour un serveur intermédiaire ou de production, vous générerez probablement le projet de base de données, puis modifierez vous-même le script de compilation. Une fois que vous avez effectué les réglages souhaités et que vous êtes satisfait du résultat, vous pouvez déployer manuellement ce script de compilation modifié dans l'environnement de production.

Scripts de déploiement

Vous pouvez spécifier des scripts qui s'exécutent avant ou après les scripts qui créent ou mettent à jour la cible. Vous ne pouvez avoir qu'un seul script de prédéploiement et qu'un seul script de post-déploiement, mais vous pouvez inclure d'autres scripts depuis ces scripts. Pour plus d'informations, consultez Utilisation de scripts de base de données.

Vous pouvez exécuter un script de compilation sur plusieurs bases de données cibles, chacune pouvant avoir une configuration différente. Par conséquent, le script de compilation contient des instructions permettant de définir toutes les propriétés de la base de données, même si leurs valeurs correspondent déjà à celles des propriétés du projet de base de données.

Considérations relatives au déploiement sur une base de données existante

Lorsque vous déployez des modifications sur une base de données existante, certaines modifications peuvent entraîner une perte de données. Si une modification risque d'entraîner la perte des données contenues dans la table, le déploiement sera annulé sauf si vous avez désactivé la case à cocher Bloquer le déploiement incrémentiel si une perte de données peut se produire dans la fenêtre des propriétés du projet. Pour plus d'informations, consultez Vue d'ensemble des paramètres de projet de base de données. Voici des exemples de modifications qui entraîneront la perte de données : si une table est supprimée puis recréée, si vous modifiez la taille d'une colonne (char(100) en char(50) ou nchar(100) en char(100)) ou si vous modifiez le classement d'une colonne de type caractère.

Récupération de déploiements non réussis

Team Edition for Database Professionals crée un point de sauvegarde dans le journal des transactions et peut revenir à ce point de sauvegarde si le déploiement échoue. Toutefois, des données peuvent être perdues si des données de la base sont modifiées pendant le déploiement entre le moment de la création du point de sauvegarde et le rétablissement de la base de données. Pour cette raison, si vous effectuez le déploiement vers une base de données partagée, il est fortement recommandé de mettre la base de données en mode mono-utilisateur avant de la déployer.

Remarque :

Vous devez utiliser le mode de récupération complet pour restaurer une base de données après un échec de déploiement. Le mode de récupération simple n'est pas suffisant parce que le journal des transactions est requis. Pour plus d'informations sur les modes de récupération, consultez Présentation des modes de récupération.

Fichiers exclus

Si vous excluez des fichiers de votre projet de base de données, les objets de base de données qui sont définis dans ces fichiers ne seront pas inclus dans votre génération ou déploiement. Si vous continuez à travailler sur un ou plusieurs objets mais que vous voulez déployer le travail déjà terminé, vous pouvez exclure des fichiers pour déployer uniquement les éléments qui sont prêts. Vous pouvez inclure ultérieurement les fichiers lorsqu'ils sont prêts à être déployés. Le déploiement mettra alors à jour la base de données avec les nouveaux objets sans modifier les objets existants (s'ils n'ont pas été modifiés dans votre projet).

Générations à partir de la ligne de commande

Vous pouvez exécuter les actions de génération, de déploiement ou de nettoyage à partir de l'interface utilisateur Visual Studio, mais également dans le cadre d'une génération à partir de la ligne de commande à l'aide de MSBuild.exe. Vous pouvez spécifier les cibles Build, Deploy, Rebuild, Clean, SQLBuild, SQLDeploy et CleanProject. Par défaut, les processus de génération et de déploiement utilisent les propriétés de projet qui sont définies dans le projet de base de données (dans le fichier .dbproj ou .dbproj.user). Toutefois, vous pouvez substituer ces propriétés sur la ligne de commande ou à partir d'un fichier réponse.

Remarque importante :

Vous devez fermer Visual Studio avant d'exécuter une génération à partir de la ligne de commande. Si vous exécutez une génération à partir de la ligne de commande pendant que Visual Studio est en cours d'exécution, certaines erreurs peuvent ne pas être détectées.

Syntaxe de ligne de commande

Vous pouvez générer le projet de base de données à partir de la ligne de commande en utilisant la syntaxe simple, comme le montrent les exemples suivants :

  • MSBuild /target:Build NomMaSolution.sln
    Cet exemple exécute l'action de génération sur la solution nommée NomMaSolution.sln en utilisant les propriétés de projet qui sont spécifiées dans les fichiers projet contenus dans la solution. Si la solution contient un ou plusieurs projets de base de données, ils seront générés ensemble avec tous les autres éléments de la solution. L'action de génération générera le script qui est nécessaire pour créer ou mettre à jour la base de données cible, mais ce script ne sera pas déployé. Vous pouvez également générer un projet de base de données spécifique. La cible Build inclut des scripts de prédéploiement et de post-déploiement dans le script de compilation généré.

  • MSBuild /target:SQLBuild NomMonProjet.dbproj
    Cet exemple exécute également une action de génération uniquement. Il génère uniquement un projet de base de données unique nommé NomMonProjet.dbproj. Les propriétés de projet définies dans le fichier .dbproj sont utilisées pour assembler le script de compilation. Ce script n'est pas déployé. La cible SQLBuild n'inclut pas les scripts de prédéploiement ou de post-déploiement dans le script de compilation généré.

  • MSBuild /target:Build /p:BuildScriptName=NomMonScript.sql NomMonProjet.dbproj
    Cet exemple exécute également une action de génération uniquement. Il génère uniquement un projet de base de données unique nommé NomMonProjet.dbproj. Les propriétés de projet définies dans le fichier .dbproj sont utilisées pour assembler le script de compilation. La ligne de commande substitue la propriété BuildScriptName et spécifie un nouveau nom pour le script de sortie. Vous pouvez utiliser cette approche si vous voulez déployer le script de compilation sur plusieurs serveurs. Ce script n'est pas déployé.

  • MSBuild /target:Deploy /property:TargetDatabase=UpdatedTargetDatabase;TargetConnectionString="Data Source=(local)\SQLEXPRESS;Integrated Security=True;Pooling=False" NomMonProjet.dbproj
    Cet exemple montre comment déployer le projet de base de données, en substituant le nom de la base de données cible et la chaîne de connexion.

  • MSBuild /target:rebuild /p:Configuration="Default" /p:DefaultDataPath="Lecteur:CheminAccès\\" NomMonProjet.dbproj
    Cet exemple indique comment régénérer le projet de base de données, spécifier une configuration (Default) et substituer la variable DefaultDataPath.

Remarque importante :

Vous devez spécifier la barre oblique inverse de fin supplémentaire ("\") pour DefaultDataPath. À défaut, des avertissements s'afficheront lors de la génération et votre projet de base de données ne sera pas correctement généré.

  • MSBuild /target:Deploy /property:BuildScriptName= NomDeMonScript.sql /property:outdir=CheminScriptGénération /property:TargetDatabase=BaseDeDonnéesCibleActualisée;TargetConnectionString="Data Source=NomInstance\NomBaseDeDonnées;Integrated Security=True;Pooling=False" CheminProjet\NomDeMonProjet.dbproj
    Cet exemple montre comment déployer une base de données à partir d'un ordinateur autre que celui sur lequel la génération a eu lieu. Par exemple, vous pouvez utiliser cette ligne de commande si vous avez un ordinateur de génération central qui crée un script de génération chaque nuit. Vous devez spécifier le nom du script de génération, le chemin d'accès de ce script (outdir), la base de données cible, ainsi que le chemin d'accès et le nom de fichier du projet de base de données.

  • MSBuild @dbbuild.arf NomMonProjet.dbproj
    Cet exemple montre comment utiliser un fichier réponse pour fournir des arguments de ligne de commande. Le fichier, dbbuild.arf, peut contenir n'importe quel commutateur de ligne de commande MSBuild valide, y compris ceux qui substituent des propriétés de projet. Pour plus d'informations sur les fichiers réponse, consultez Fichiers réponse MSBuild.

  • MSBuild /target:Rebuild NomMonProjet.dbproj
    Cet exemple régénère le projet ou la solution spécifiés, même s'ils n'ont pas changé depuis leur dernière génération.

  • MSBuild /target:Clean NomMonProjet.dbproj
    Cet exemple montre comment supprimer tout script de compilation existant. Plus couramment, vous ferez probablement suivre cette action d'une autre action de génération ou de déploiement.

Remarque :

Vous pouvez abréger /target: en /t: et /property: en /p:.

Pour plus d'informations sur les options de ligne de commande pour MSBuild, consultez Référence de la ligne de commande MSBuild.

Pour plus d'informations sur les fichiers réponse, consultez la page MSBuild Response (en anglais).

Remarque :

Pour exécuter MSBuild.exe, vous devez soit utiliser l'invite de commandes Visual Studio 2005, soit exécuter le fichier batch vsvars32.bat situé dans le dossier spécifié par la variable d'environnement %VS80COMNTOOLS%.

Propriétés de projet de base de données

Certaines propriétés de projet de base de données affectent la façon dont votre projet de base de données sera généré et déployé. Ces propriétés sont stockées dans le fichier projet de base de données et dans le fichier .user. Vous pouvez les substituer à l'aide d'une ligne de commande ou dans un fichier réponse. Pour plus d'informations sur les propriétés de projet de base de données, consultez Vue d'ensemble des paramètres de projet de base de données.

Considérations relatives à la sécurité

Si d'autres utilisateurs peuvent modifier votre instance de la base de données de validation au moment du design, ils peuvent ajouter ou modifier des objets qui finiront dans votre script de compilation. La sortie de génération produira ces objets (par exemple, des déclencheurs DDL), lesquels s'exécuteront dans le contexte de la personne qui déploie la base de données. Ces objets n'apparaîtront pas nécessairement dans l'Explorateur de solutions ou dans la vue Schéma. La comparaison de schémas ne détectera rien lorsque vous comparerez le projet de base de données sur vos bases de données déployées car la base de données de validation au moment du design contient également ces objets.

Pour réduire le risque auquel est exposée votre base de données :

  • Ne partagez pas votre instance de la base de données de validation au moment du design avec d'autres utilisateurs.

  • Vérifiez vos scripts de compilation avant de les déployer.

Voir aussi

Tâches

Comment : préparer des scripts de compilation de base de données

Comment : déployer des modifications vers des bases de données nouvelles ou existantes

Procédure pas à pas : création et déploiement d'une nouvelle base de données sous contrôle de version

Procédure pas à pas : déploiement de modifications vers une base de données sous contrôle de version existante

Concepts

Vue d'ensemble de la terminologie de Database Edition