Übersicht über das Erstellen und Bereitstellen einer Datenbank
Zum Bereitstellen einer neuen Datenbank oder von Änderungen an einer vorhandenen Datenbank aus dem Datenbankprojekt auf einem Datenbankserver müssen Sie das Datenbankprojekt erstellen und anschließend auf dem Datenbankserver bereitstellen. Bei der Erstellung werden die Objektdefinitionsskripts und alle Skripts vor bzw. nach der Bereitstellung in einem Buildskript zusammengefasst. Dabei werden die von Ihnen im Projekteigenschaftenfenster festgelegten Eigenschaften verwendet. Bei der Bereitstellung wird zunächst das Skript zusammengestellt und anschließend dieses Buildskript für das von Ihnen angegebene Ziel ausgeführt. Bei der Buildbereinigung werden nur sämtliche vorhandene Buildskripts gelöscht. Wenn Sie einen Staging- oder Produktionsserver aktualisieren, erstellen Sie wahrscheinlich zunächst das Datenbankprojekt und ändern anschließend das Buildskript. Nachdem Sie die Anpassungen vorgenommen und die gewünschten Ergebnisse erzielt haben, können Sie das geänderte Buildskript manuell in der Produktionsumgebung bereitstellen.
Bereitstellungsskripts
Sie können Skripts angeben, die vor oder nach den Skripts ausgeführt werden, die das Ziel erstellen oder aktualisieren. Es ist nur ein Skript vor der Bereitstellung und eines nach der Bereitstellung zulässig, Sie können aber andere Skripts in diese Skripts einfügen. Weitere Informationen finden Sie unter Arbeiten mit Datenbankskripts.
Sie können ein Buildskript für unterschiedliche Zieldatenbanken ausführen, von denen jede verschieden konfiguriert sein kann. Daher enthält das Buildskript Anweisungen zum Festlegen aller Datenbankeigenschaften, auch wenn deren Werte bereits mit den Werten der Datenbankprojekteigenschaften übereinstimmen.
Überlegungen zur Bereitstellung in einer vorhandenen Datenbank
Wenn Sie Änderungen an einer vorhandenen Datenbank bereitstellen, können einige Änderungen zu Datenverlusten führen. Wenn eine Änderung zu einem Datenverlust in der Tabelle führen würde, wird die Bereitstellung abgebrochen, sofern Sie nicht im Projekteigenschaftenfenster das Kontrollkästchen Inkrementelle Bereitstellung blockieren, wenn Datenverlust auftreten könnte deaktiviert haben. Weitere Informationen finden Sie unter Übersicht über Datenbankprojekteinstellungen. Im Folgenden finden Sie Beispiele für Änderungen, die Datenverluste verursachen: Sie löschen eine Tabelle und erstellen diese neu, Sie ändern die Größe einer Spalte (char(100) in char(50) oder nchar(100) in char(100)), oder Sie ändern die Sortierreihenfolge einer Spalte mit Daten vom Typ Zeichen.
Ausgeschlossene Dateien
Wenn Sie Dateien vom Datenbankprojekt ausschließen, werden die Datenbankobjekte, die in diesen Dateien definiert sind, nicht in die Erstellung oder Bereitstellung eingeschlossen. Wenn Sie noch an einem oder mehreren Objekten arbeiten, aber bereits abgeschlossene Arbeiten bereitstellen möchten, können Sie Dateien ausschließen, um nur die bereits fertigen Elemente bereitzustellen. Sie können dann später die Dateien hinzufügen, wenn diese für die Bereitstellung vorbereitet sind. Die Datenbank wird bei der Bereitstellung mit den neuen Objekten aktualisiert, ohne dass die vorhandenen Objekte geändert werden (sofern diese nicht im Projekt geändert wurden).
Befehlszeilenbuilds
Neben dem Ausführen der Aktionen für das Erstellen, Bereitstellen oder Bereinigen auf der Benutzeroberfläche von Visual Studio können Sie diese Aktionen auch als Teil eines Befehlszeilenbuilds mit MSBuild.exe ausführen. Sie können die Ziele für Build, Deploy, Rebuild, Clean, SQLBuild, SQLDeploy und CleanProject angeben. Standardmäßig werden beim Erstellen und Bereitstellen die Projekteigenschaften verwendet, die im Datenbankprojekt definiert sind (in der DBPROJ-Datei oder der DBPROJ.USER-Datei). Sie können diese Eigenschaften aber an der Befehlszeile oder in einer Antwortdatei überschreiben.
Wichtig
Sie sollten Visual Studio schließen, bevor Sie einen Befehlszeilenbuild ausführen. Wenn Sie einen Befehlszeilenbuild ausführen, während Visual Studio ausgeführt wird, können einige Fehler möglicherweise nicht abgefangen werden.
Befehlszeilensyntax
Sie können das Datenbankprojekt mit einer ganz einfachen Syntax erstellen, wie in den folgenden Beispielen dargestellt:
- MSBuild /target:Build MeinProjektmappenname.sln
In diesem Beispiel wird der Buildvorgang für die Projektmappe MeinProjektmappenname.sln ausgeführt, wobei die Projekteigenschaften verwendet werden, die in den Projektdateien der Projektmappe angegeben wurden. Wenn die Projektmappe mindestens ein Datenbankprojekt enthält, wird diese zusammen mit dem übrigen Teil der Projektmappe erstellt. Beim Buildvorgang wird das Skript erstellt, das für das Erstellen oder Aktualisieren der Zieldatenbank erforderlich ist. Dieses Skript wird aber nicht bereitgestellt. Sie können auch ein bestimmtes Datenbankprojekt erstellen. Das Ziel von Build enthält im generierten Buildskript Skripts vor der Bereitstellung und Skripts nach der Bereitstellung.
- MSBuild /target:SQLBuild MeinProjektname.dbproj
In diesem Beispiel wird ausschließlich ein Buildvorgang ausgeführt. Dabei wird nur ein einzelnes Datenbankprojekt mit dem Namen MeinProjektname.dbproj erstellt Die Projekteigenschaften innerhalb der DBPROJ-Datei werden für das Zusammenstellen des Buildskripts verwendet. Das Skript wird nicht bereitgestellt. Das Ziel von SQLBuild enthält im generierten Buildskript weder Skripts vor der Bereitstellung noch Skripts nach der Bereitstellung.
- MSBuild /target:Build /p:BuildScriptName=MeinSkriptname.sql MeinProjektname.dbproj
In diesem Beispiel wird ausschließlich ein Buildvorgang ausgeführt. Dabei wird nur ein einzelnes Datenbankprojekt mit dem Namen MeinProjektname.dbproj erstellt Die Projekteigenschaften innerhalb der DBPROJ-Datei werden für das Zusammenstellen des Buildskripts verwendet. Die Angaben in der Befehlszeile überschreiben die BuildScriptName-Eigenschaft und geben einen neuen Namen für das Ausgabeskript an. Sie können diese Vorgehensweise verwenden, wenn Sie das Buildskript auf mehreren Servern bereitstellen möchten. Das Skript wird nicht bereitgestellt.
- MSBuild /target:Deploy /property:TargetDatabase=UpdatedTargetDatabase;TargetConnectionString="Data Source=(local)\SQLEXPRESS;Integrated Security=True;Pooling=False" MeinProjektname.dbproj
In diesem Beispiel wird das Bereitstellen des Datenbankprojekts veranschaulicht, wobei der Zieldatenbankname und die Verbindungszeichenfolge überschrieben werden.
- MSBuild /target:SQLDeploy MeinProjektname.dbproj
In diesem Beispiel wird das erneute Bereitstellen des vorhandenen Buildskripts für das angegebene Datenbankprojekt veranschaulicht.
- MSBuild @dbbuild.arf MeinProjektname.dbproj
In diesem Beispiel wird die Verwendung einer Antwortdatei für die Angabe von Befehlszeilenargumenten veranschaulicht. Die Datei dbbuild.arf darf alle gültigen MSBuild-Befehlszeilenschalter enthalten, einschließlich jenen, die Projekteigenschaften überschreiben.
- MSBuild /target:Rebuild MeinProjektname.dbproj
In diesem Beispiel wird das angegebene Projekt oder die angegebene Projektmappe erneut erstellt, auch wenn seit dem letzten Buildvorgang keine Änderungen vorgenommen wurden.
- MSBuild /target:Clean MeinProjektname.dbproj
In diesem Beispiel wird das Löschen aller vorhandenen Buildskripts veranschaulicht. Im Allgemeinen würde auf diese Aktion ein anderer Build- oder Bereitstellungsvorgang folgen.
Hinweis
Sie können /target: mit /t: und /property: mit /p: abkürzen.
Weitere Informationen über Befehlszeilenoptionen für MSBuild finden Sie unter MSBuild-Befehlszeilenreferenz.
Weitere Informationen über Antwortdateien finden Sie unter MSBuild Response.
Hinweis
Zum Ausführen von MSBuild.exe müssen Sie entweder die Eingabeaufforderung von Visual Studio 2005 verwenden oder die Batchdatei vsvars32.bat ausführen, die Sie in dem Ordner finden, der durch die Umgebungsvariable %VS80COMNTOOLS% angegeben wird.
Datenbankprojekteigenschaften
Einige Datenbankprojekteigenschaften haben Einfluss darauf, wie das Datenbankprojekt erstellt und bereitgestellt wird. Diese Eigenschaften werden in der Datenbankprojektdatei und der USER-Datei gespeichert. Sie können diese Eigenschaften an der Befehlszeile oder in einer Antwortdatei überschreiben. Weitere Informationen über Datenbankprojekteigenschaften finden Sie unter Übersicht über Datenbankprojekteinstellungen.
Sicherheitsüberlegungen
Wenn andere Benutzer die Instanz der Datenbank für die Entwurfszeitvalidierung ändern können, können sie Objekte hinzufügen oder ändern, die letztendlich in Ihrem Buildskript enthalten sind. Die Buildausgabe generiert diese Objekte (z. B. DLL-Trigger), und sie werden im Kontext der Person ausgeführt, die die Datenbank bereitstellt. Diese Objekte werden nicht zwangsläufig im Projektmappen-Explorer oder in der Schemaansicht angezeigt. Mit dem Schemavergleich wird nichts erkannt, wenn Sie das Datenbankprojekt mit der bereitgestellten Datenbank vergleichen, weil die Datenbank für die Entwurfszeitvalidierung auch diese Objekte enthält.
Um das Risiko für die Datenbank möglichst gering zu halten, beachten Sie folgende Hinweise:
Geben Sie die Instanz der Datenbank für die Entwurfszeitvalidierung nicht für andere Benutzer frei.
Überprüfen Sie Buildskripts, bevor Sie sie bereitstellen.
Siehe auch
Aufgaben
Gewusst wie: Vorbereiten von Datenbankbuildskripts
Gewusst wie: Bereitstellen von Änderungen in neuen oder vorhandenen Datenbanken
Exemplarische Vorgehensweise: Erstellen und Bereitstellen einer neuen der Versionskontrolle unterliegenden Datenbank
Exemplarische Vorgehensweise: Bereitstellen von Änderungen an einer vorhandenen der Versionskontrolle unterliegenden Datenbank
Konzepte
Übersicht über die Terminologie von Team Edition for Database Professionals