Übersicht über datenbankübergreifende Verweise
Aktualisiert: November 2007
Sie können Datenbankobjekte erstellen oder importieren, die auf Objekte in anderen Datenbanken verweisen. Diese datenbankübergreifenden Verweise erfordern, dass Sie in den Eigenschaften des Datenbankprojekts einen entsprechenden Verweis definieren. Wenn Sie auf Objekte in anderen Datenbanken verweisen und die entsprechenden Verweise in Ihrem Projekt nicht definieren, werden Warnungen angezeigt. Sie können für jede Datenbank, auf die Sie verweisen, SETVAR-Variablen definieren, die dem Server und der Datenbank entsprechen, auf die Sie verweisen möchten. Wenn Sie eine Objektdefinition so ändern, dass sie den Verweis einschließt, können Sie den Verweis mithilfe dieser Variablen anstelle der expliziten Namen von Server und Datenbank definieren. Wenn Sie das Datenbankprojekt erstellen, werden die Variablen durch die von Ihnen angegebenen Werte ersetzt.
![]() |
---|
Zum Erstellen datenbankübergreifender Verweise für eine bestimmte Buildkonfiguration müssen Sie die SETVAR-Variablen für diese Verweise als MSBuild-Variablen definieren. Sie können z. B. einen Satz MSBuild-Variablen beim Erstellen und Bereitstellen eines Datenbankprojekts auf einem Stagingserver und einen weiteren Satz beim Erstellen und Bereitstellen desselben Projekts auf einem Produktionsserver verwenden. Wenn Sie die SETVAR-Variablen für einen datenbankübergreifenden Verweis mit den Namen von Server und Datenbank erstellen, funktioniert der Verweis unabhängig von der angegebenen Buildkonfiguration auf dieselbe Weise. |
Szenarien für datenbankübergreifende Verweise
Visual Studio Team System Database Edition unterstützt die folgenden Szenarien:
Sie haben ein Datenbankprojekt erstellt und das Schema aus einer vorhandenen Datenbank importiert. Das Schema enthält Objekte, die auf Objekte in einer oder mehreren anderen Datenbanken verweisen. Definieren Sie in den Eigenschaften des Projekts einen entsprechenden Verweis, und ersetzen Sie die expliziten Namen von Server und Datenbank durch die SETVAR-Variablen. Wegen dieser Definition können die datenbankübergreifenden Verweise zur Entwurfszeit überprüft werden. Sie können das Datenbankprojekt auch in einer isolierten Entwicklungsumgebung bereitstellen, in der der Name des Zielservers vom Namen des Zielservers in Ihrer Produktionsumgebung abweicht.
Ihr Datenbankprojekt enthält datenbankübergreifende Verweise, die SETVAR-Variablen zur Identifikation von Servern und Datenbanken verwenden. Sie möchten die Namen dieser Variablen ändern und die Objektdefinitionen aktualisieren, die diese Verweise enthalten.
Sie möchten auf zusätzliche Datenbankschemas aus dem Datenbankprojekt verweisen, das Sie entwickeln. Sie möchten nur diese Schemas für das Team freigeben, ohne die anderen Datenbankprojekte freigeben zu müssen. Sie können für diese anderen Projekte einen Verweis zu den Datenbankmetadateien (.dbmeta) hinzufügen und nur die Metadateien in die Versionskontrolle einchecken. Durch diese Vorgehensweise können Sie den Zugriff auf die Datenbankprojekte mit den Schemas, auf die Sie verweisen möchten, einschränken. Verwenden Sie diese Vorgehensweise auch, wenn Sie ein Datenbankprojekt ohne abhängige Projekte bereitstellen möchten.
Mit der Datenbankumgestaltung können Sie zusätzliche Aufgaben mit datenbankübergreifenden Verweisen ausführen. Weitere Informationen finden Sie unter Gewusst wie: Umbenennen von Verweisen auf einen Server oder eine Datenbank.
Verweise auf Datenbankprojekte und Metadateien
Wenn Sie einen Verweis in einem Datenbankprojekt hinzufügen, können Sie entweder ein weiteres Datenbankprojekt oder eine weitere Metadatei angeben, das bzw. die beim Erstellen eines Datenbankobjekts erzeugt wird.
In folgenden Fällen sollten Sie auf ein anderes Datenbankprojekt verweisen:
- Sie müssen Änderungen an den Schemas beider Datenbanken vornehmen, die den Verweis und die Datenbank enthalten, auf die Sie verweisen. Wenn Sie das Datenbankprojekt bereitstellen, das den Verweis enthält, stellen Sie auch das Datenbankprojekt bereit, auf das Sie verweisen.
In folgenden Fällen sollten Sie auf eine Datenbankmetadatei verweisen:
Sie müssen auf eine Datenbank verweisen, deren Projekt nicht in der aktuellen Projektmappe enthalten ist.
Sie müssen ein einzelnes Projekt bereitstellen, ohne die Projekte bereitzustellen, von denen es abhängig ist.
Sie verweisen auf ein Datenbankschema, das sich wahrscheinlich nicht ändert. In diesem Szenario können Sie die Datenbankmetadatei in die Versionskontrolle einchecken.
Einschränkungen datenbankübergreifender Verweise
Wenn Sie ein Datenbankschema importieren, werden durch die Verweise auf andere Datenbanken in den Objektdefinitionen Warnungen ausgegeben, weil das Datenbankprojekt diese Verweise erst überprüfen kann, nachdem es bereitgestellt wurde. Nachdem Sie die Datenbankverweise in den Eigenschaften des Projekts definiert haben, können Sie die Objektdefinitionen überprüfen und die in den Warnungen angegebenen Probleme beheben. Sie können dann die Objektdefinitionen aktualisieren, indem Sie die Namen von Servern und Datenbanken durch die Variablen ersetzen. Sie können diese Ersetzung auch mithilfe der Umgestaltung ausführen. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von datenbankübergreifenden Verweisen und unter Gewusst wie: Umbenennen von Verweisen auf einen Server oder eine Datenbank.
Die Variablen und Werte für die Server und Datenbanken, auf die Sie verweisen, sind für das Erstellen einer Buildkonfiguration nicht spezifisch. Sie müssen bei der Eingabe an einer Eingabeaufforderung mit MSBuild-Variablen auf den Server und die Datenbank verweisen. Diese Variablen können zur Bereitstellungszeit ersetzt werden.
Außerdem gelten die folgenden Einschränkungen:
Sie können einen Verweis auf eine Datenbank nur hinzufügen, wenn ein entsprechendes Datenbankprojekt vorhanden ist.
Sie müssen ein Datenbankprojekt erstellen, bevor Sie einen Verweis auf die Metadatei für dieses Datenbankprojekt hinzufügen können.
Sie müssen die Datenbankprojekte erstellen, auf die Sie verweisen, damit die datenbankübergreifenden Verweise auf diese Projekte keine Warnungen verursachen.
Wenn Sie die Buildkonfiguration der Projektmappe oder des Datenbankprojekts ändern, auf die bzw. das Sie verweisen, müssen Sie die Projektmappe möglicherweise neu erstellen, damit die datenbankübergreifenden Verweise auf diese Projekte keine Warnungen verursachen.
Wenn Sie auf ein Objekt in einem Datenbankprojekt auf einem anderen Server verweisen, müssen Sie ihn auf Ihrem Zielserver als verknüpften Server definieren. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von datenbankübergreifenden Verweisen.
Für den Verweis auf einen Masterdatenbank ist kein datenbankübergreifender Verweis erforderlich.
Verweise, die SETVAR-Variablen enthalten, müssen immer das Format "[$ (VariableName)]" aufweisen. Wenn Sie die eckigen Klammern weglassen, können Sie das Datenbankprojekt möglicherweise nicht bereitstellen.
Die Namen der SETVAR-Variablen müssen eindeutig sein. Wenn Server und Datenbank denselben Namen aufweisen, müssen Sie Variablen mit unterschiedlichen Namen definieren, die in denselben Wert aufgelöst werden.
Sicherheitsüberlegungen
Die Metadatei, die beim Erstellen eines Datenbankprojekts erstellt wird, enthält Schemainformationen für dieses Projekt. Sie sollten den Zugriff auf die Metadatei einschränken, um diese Schemainformationen zu schützen. Sie können Metadateien für das Team freigeben, indem Sie sie in die Versionskontrolle einchecken, anstatt sie auf dem Zielserver bereitzustellen. Wenn sich das Datenbankprojekt für die Datenbank, auf die Sie verweisen, in derselben Projektmappe befindet, können andere Entwickler des Projekts beim Synchronisieren mit der Versionskontrolle darauf zugreifen und die Projektmappe erstellen.
Beispiel
Bei zwei Datenbankprojekten, ReportDb und DependentDb, können Sie in DependentDb auf Objekte aus ReportDb verweisen. Fügen Sie zunächst einen Verweis zu den Eigenschaften des DependentDb-Datenbankprojekts hinzu, und definieren Sie die Variablen wie folgt:
RefServer
RefDatabase
Der Wert für RefServer ist der Name des Servers, auf dem sich DependentDb befindet. Der Wert für RefDatabase ist der Name der Zieldatenbank, die durch das DependentDb-Projekt bereitgestellt wird. In diesem Beispiel verfügt RefServer über den Wert StageSvr, und RefDatabase verfügt über den Wert DepDb.
Sie können eine Ansicht zu ReportDb hinzufügen, in der alle Spalten der Employee-Tabelle in der DependentDb ausgewählt sind, die in der Datenbank mit dem Namen DepDb auf dem Server mit dem Namen StageSvr bereitgestellt wird. Die Objektdefinition für diese Ansicht erstellen Sie wie folgt:
CREATE VIEW [dbo].[DependentView]
AS
SELECT * FROM [$(RefServer)].[$(RefDatabase)].[dbo].[Employee]
;
Siehe auch
Aufgaben
Gewusst wie: Umbenennen von Verweisen auf einen Server oder eine Datenbank
Konzepte
Übersicht über das Arbeiten mit Datenbankobjekten
Übersicht über die Terminologie der Database Edition
Weitere Ressourcen
Gewusst wie: Erstellen von datenbankübergreifenden Verweisen