Partager via


Vue d'ensemble des références entre bases de données

Mise à jour : novembre 2007

Vous pouvez créer ou importer des objets de base de données qui font référence à des objets d'autres bases de données. Ces références entre bases de données impliquent que vous définissiez une référence correspondante dans les propriétés de votre projet de base de données. Si vous faites référence aux objets d'autres bases de données mais vous ne définissez pas les références correspondantes dans votre projet, des avertissements s'afficheront. Pour chaque base de données à laquelle vous faites référence, vous pouvez définir des variables SETVAR qui correspondent au serveur et à la base de données en question. Lorsque vous modifiez une définition d'objet pour inclure la référence, vous pouvez définir celle-ci en utilisant ces variables au lieu des noms explicites du serveur et de la base de données. Lorsque vous générez le projet de base de données, les variables sont remplacées par les valeurs que vous avez spécifiées.

Remarque :

Pour que des références entre bases de données s'appliquent à une configuration de génération particulière, vous devez définir les variables SETVAR pour ces références en tant que variables MSBuild. Par exemple, vous pouvez utiliser un jeu de variables MSBuild lorsque vous générez et déployez un projet de base de données sur un serveur intermédiaire et un autre jeu lorsque vous générez et déployez le même projet sur un serveur de production. Si vous définissez les variables SETVAR pour une référence entre bases de données en termes de noms de serveur et de base de données, la référence fonctionnera de la même manière, quelle que soit la configuration de génération que vous spécifiez.

Scénarios de références entre bases de données

Visual Studio Team System Database Edition prend en charge les scénarios suivants :

  • Vous avez créé un projet de base de données et importé le schéma d'une base de données existante. Le schéma contient des objets qui font référence à des objets d'une ou de plusieurs autres bases de données. Dans les propriétés du projet, vous définissez une référence correspondante et remplacez les noms explicites du serveur et de la base de données avec les variables SETVAR. Cette définition permet que les références entre bases de données soient validées au moment de la conception. Vous pouvez également déployer le projet de base de données dans un environnement de développement isolé où le nom du serveur cible est différent du nom du serveur cible de votre environnement de production.

  • Vous avez un projet de base de données qui contient des références entre bases de données, et ces références utilisent des variables SETVAR pour identifier des serveurs et des bases de données. Vous souhaitez modifier les noms de ces variables et mettre à jour les définitions d'objet qui contiennent ces références.

  • Vous souhaitez référencer des schémas de base de données supplémentaires du projet de base de données que vous développez. Vous souhaitez partager avec l'équipe uniquement ces schémas, et non les autres projets de base de données. Vous pouvez ajouter une référence aux métafichiers de base de données (.dbmeta) pour ces autres projets et contrôler uniquement les métafichiers dans le contrôle de version. En utilisant cette approche, vous pouvez restreindre l'accès aux projets de base de données qui contiennent les schémas que vous souhaitez référencer. Vous devez également utiliser cette approche si vous souhaitez déployer un projet de base de données mais pas les projets qui en dépendent.

Vous pouvez utiliser la refactorisation de base de données pour effectuer des tâches supplémentaires avec les références entre bases de données. Pour plus d'informations, consultez Comment : renommer les références à un serveur ou une base de données.

References to Database Projects and Metafiles

Lorsque vous ajoutez une référence dans un projet de base de données, vous pouvez spécifier un autre projet de base de données ou un métafichier qui est produit quand vous générez un projet de base de données.

Vous devez faire référence à un autre projet de base de données si :

  • Vous devez apporter des modifications aux schémas tant de la base de données qui contiendra la référence que de celle à laquelle vous faites référence. Lorsque vous déployez le projet de base de données qui contient la référence, vous déploierez également le projet de base de données auquel vous faites référence.

Vous devez faire référence à un métafichier de base de données si :

  • Vous devez faire référence à une base de données dont le projet ne se trouve pas dans la solution actuelle.

  • Vous devez déployer uniquement un projet sans les projets dont il dépend.

  • Vous faites référence à un schéma de base de données qui ne changera probablement pas. Dans ce scénario, vous pouvez contrôler le métafichier de base de données dans le cadre du contrôle de version.

Limitations relatives aux références entre bases de données

Lorsque vous importez un schéma de base de données, les références à d'autres bases de données dans les définitions d'objet produisent des avertissements parce que le projet de base de données ne peut pas valider ces références avant le déploiement. Après avoir défini des références à des base de données dans les propriétés du projet, vous pouvez valider les définitions d'objet et résoudre les avertissements. Vous pouvez ensuite mettre à jour les définitions d'objet en remplaçant les noms de serveurs et de bases de données par des variables. Vous pouvez également utiliser la refactorisation pour exécuter cette substitution. Pour plus d'informations, consultez Comment : créer des références entre bases de données et Comment : renommer les références à un serveur ou une base de données.

Les variables et valeurs pour les serveurs et bases de données que vous référencez ne sont pas spécifiques à une configuration de génération. Pour spécifier le serveur et la base de données à une invite de commandes, vous devez les référencer sous forme de variables MSBuild qui peuvent être substituées au moment du déploiement.

Les limitations suivantes s'appliquent également :

  • Vous pouvez ajouter une référence à une base de données uniquement si elle est associée à un projet de base de données correspondant.

  • Vous devez générer un projet de base de données avant de pouvoir ajouter une référence au métafichier pour ce projet de base de données.

  • Vous devez générer les projets de base de données auxquels vous faites référence afin que les références entre bases de données correspondantes se résolvent sans avertissements.

  • Si vous modifiez la configuration de génération de la solution ou des projets de base de données auxquels vous faites référence, vous devrez peut-être régénérer la solution afin que les références entre bases de données correspondantes se résolvent sans avertissements.

  • Si vous faites référence à un objet d'un projet de base de données situé sur un autre serveur, vous devez définir celui-ci comme un serveur lié sur votre serveur cible. Pour plus d'informations, consultez Comment : créer des références entre bases de données.

  • Il est inutile de recourir à une référence entre bases de données pour faire référence à la base de données master.

  • Les références qui incluent des variables SETVAR doivent toujours avoir la forme" [$ (NomVariable)] ". Si vous omettez les crochets, vous risquez de ne pas pouvoir déployer le projet de base de données.

  • Les noms de variables SETVAR doivent être uniques. Si votre serveur a le même nom que votre base de données, vous devez définir des variables qui ont des noms différents mais dont la résolution aboutit à la même valeur.

Considérations à propos de la sécurité

Le métafichier qui est créé lorsque vous générez un projet de base de données contient des informations de schéma pour ce projet. Vous devez limiter l'accès au métafichier pour protéger ces informations de schéma. Vous pouvez partager des métafichiers avec l'équipe en les vérifiant dans le contrôle de version, et non en les déployant sur le serveur cible. Si le projet de base de données pour la base de données à laquelle vous faites référence se trouve dans la même solution, d'autres développeurs travaillant sur le projet y auront accès lorsqu'ils effectueront la synchronisation avec le contrôle de version et génèreront la solution.

Exemple

Si vous avez deux projets de base de données, ReportDb et DependentDb, vous souhaitez peut-être référencer des objets de ReportDb dans DependentDb. Commencez par ajouter une référence dans les propriétés du projet de base de données DependentDb et définissez des variables comme suit :

  • RefServer

  • RefDatabase

La valeur de RefServer est le nom du serveur sur lequel DependentDb réside. La valeur de RefDatabase est le nom de la base de données cible qui est déployée par le projet DependentDb. Dans cet exemple, RefServer a la valeur StageSvr et RefDatabase a la valeur DepDb.

Vous pourriez ajouter à ReportDb une vue qui sélectionne toutes les colonnes de la table Employee du projet DependentDb qui est déployé dans la base de données nommée DepDb, sur le serveur nommé StageSvr. Pour créer la définition d'objet correspondant à cet affichage, vous procéderiez comme suit :

CREATE VIEW [dbo].[DependentView]
AS
SELECT * FROM [$(RefServer)].[$(RefDatabase)].[dbo].[Employee]
;

Voir aussi

Tâches

Comment : renommer les références à un serveur ou une base de données

Concepts

Vue d'ensemble de l'utilisation d'objets de base de données

Vue d'ensemble de la terminologie de Database Edition

Autres ressources

Comment : créer des références entre bases de données