Gewusst wie: Bereitstellen einer Datenbank mit eine–m Webanwendungsprojekt
Beim Vorbereiten der Bereitstellung eines Webanwendungsprojekts mit SQL Server-Datenbanken können Sie Einstellungen eingeben, um die Datenbankskripts anzugeben, die während der Bereitstellung ausgeführt werden müssen. Diese Einstellungen gelten sowohl für die Bereitstellung mit der One-Click-Veröffentlichung als auch die Bereitstellung mit einem Webbereitstellungspaket.
Die ersten zwei Verfahren in diesem Thema enthalten Anweisungen zum Angeben der bereitzustellenden Datenbankinformationen, wenn die Datenbank noch nicht in der Zielumgebung vorhanden ist. In den restlichen Prozeduren wird erläutert, wie die Einstellungen geändert werden, nachdem die Anwendung bereitgestellt wurde. Nach der Erstbereitstellung einer Anwendung befindet sich die Datenbank bereits auf dem Zielserver. Sie möchten ggf. keine Datenbankskripts ausführen, oder Sie möchten andere Skripts ausführen.
In diesem Thema werden nur Datenbankeinstellungen beschrieben. Informationen zu anderen Einrichtungsaufgaben für die Bereitstellung finden Sie unter Gewusst wie: Bereitstellen eines Webanwendungsprojekts mit One-Click-Veröffentlichung und Webbereitstellung oder Gewusst wie: Bereitstellen eines Webanwendungsprojekts mit einem Webbereitstellungspaket. Weitere Informationen zum Bereitstellen von Webanwendungsprojekten finden Sie unter Einstieg in die ASP.NET-Bereitstellung.
Hinweis
Die folgenden Prozeduren sind für Datenbanken vorgesehen, die weniger als 10.000 Datenbankobjekte enthalten.(Die Anzahl der Objekte schließt Daten sowie Strukturen ein; Tabellenzeilen werden als Objekte gezählt.) Informationen zum Bereitstellen einer größeren Datenbank finden Sie unter Bereitstellen einer Datenbank mit dem Assistenten zum Veröffentlichen von Datenbanken.
Konfigurieren der Erstbereitstellung
Sie verwenden die Registerkarte SQL packen/veröffentlichen der Projektseite Eigenschaften, um Einstellungen zu konfigurieren, die bestimmen, welche Skripts während der Bereitstellung ausgeführt werden. Diese Registerkarte ist in einen Haupt- und einen Detailbereich unterteilt. In einem Raster im oberen Bereich geben Sie die bereitzustellenden Datenbanken an. Im restlichen Teil der Registerkarte geben Sie Einstellungen für die im Raster ausgewählte Datenbank an.
So geben Sie bereitzustellende Datenbanken an
Wählen Sie im Projektmappen-Explorer den Projektnamen aus, und klicken Sie dann auf Eigenschaften.
Klicken Sie auf der Eigenschaftenseite auf die Registerkarte SQL packen/veröffentlichen.
Die Registerkarte SQL packen/veröffentlichen wird wie in der folgenden Abbildung dargestellt angezeigt:
Wählen Sie in der Dropdownliste Konfiguration die Buildkonfiguration aus, die Sie bereitstellen möchten.
Sie können die Bereitstellung für die Debug- oder Releasebuildkonfigurationen oder für eine im Dialogfeld Konfigurations-Manager erstellte benutzerdefinierte Buildkonfiguration konfigurieren. Sie können z. B. unterschiedliche Einstellungen für die Bereitstellung auf einem Testserver und die Bereitstellung auf einem Produktionsserver verwenden.
Der Standardwert für die Liste Konfiguration ist Aktiv. Dies bedeutet, dass die Einstellungen auf dieser Registerkarte für die momentan für das Projekt ausgewählte Buildkonfiguration gelten. Die momentan ausgewählte Buildkonfiguration wird auf der Hauptsymbolleiste und im Dialogfeld Konfigurations-Manager angezeigt. (Um das Dialogfeld Konfigurations-Manager zu öffnen, wählen Sie den entsprechenden Eintrag im Menü Erstellen aus.)
Klicken Sie auf Aus Web.config importieren.
Im Raster wird eine Zeile für jede Verbindungszeichenfolge erstellt, die in der Web.config-Datei gefunden wird. Standardmäßig wird "-Deployment" an den Verbindungszeichenfolgennamen angefügt.
Wenn die Webanwendung Datenbanken verwendet, die nicht durch Verbindungszeichenfolgen in der Web.config-Datei dargestellt werden, fügen Sie manuell eine Zeile für jede dieser Datenbanken hinzu. Für manuell eingegebene Zeilen können beliebige Namen verwendet werden, von denen sich die jeweilige Datenbank gut ableiten lässt.
Nachdem Sie die bereitzustellenden Datenbanken angegeben haben, können Sie Einstellungen für jede Datenbank eingeben. Führen Sie die folgenden Schritte für jede Datenbank aus, die Sie im Raster Datenbankeinträge eingegeben haben.
So geben Sie Einstellungen für eine Datenbank ein
Wählen Sie im Raster Datenbankeinträge die Zeile aus, für die Sie Einstellungen eingeben möchten.
Die im Abschnitt Datenbankeintragsdetails eingegebenen Werte gelten nur für die ausgewählte Zeile im Raster Datenbankeinträge. Wenn keine Zeilen im Raster Datenbankeinträge ausgewählt sind, ist der Abschnitt Datenbankeintragsdetails deaktiviert.
Geben Sie im Feld Verbindungszeichenfolge für Zieldatenbank die Verbindungszeichenfolge ein, die während der Bereitstellung verwendet werden soll.
Diese Verbindungszeichenfolge kann sich von der Zeichenfolge unterscheiden, die in der bereitgestellten Web.config-Datei für die gleiche Datenbank verwendet wird. Die Verbindungszeichenfolge für die Bereitstellung kann z. B. Administratorberechtigungen erfordern, die Sie der Verbindung nicht zuweisen möchten, wenn Benutzer die Anwendung ausführen.
Wenn Sie Skripts automatisch aus einer vorhandenen Datenbank generieren möchten, aktivieren Sie das Kontrollkästchen Daten und/oder Schema aus einer vorhandenen Datenbank extrahieren.
Für Zeilen im Raster Datenbankeinträge, die aus der Web.config-Datei importiert wurden, ist dieses Kontrollkästchen standardmäßig aktiviert. Wenn diese Option aktiviert ist, enthält das Raster Datenbankskripts eine Zeile, die angibt, dass automatisch generierte Skripts in der Zieldatenbank ausgeführt werden.
Wenn Sie das Kontrollkästchen Daten und/oder Schema aus einer vorhandenen Datenbank extrahieren aktiviert haben, führen Sie die folgenden Schritte aus:
Geben Sie im Textfeld Verbindungszeichenfolge für Quelldatenbank die Verbindungszeichenfolge ein, die während der Bereitstellung verwendet werden soll.
Für Zeilen im Raster Datenbankeinträge, die aus der Web.config-Datei importiert wurden, wird dieses Feld standardmäßig mit dem Wert aus der Web.config-Datei initialisiert.
Geben Sie in der Dropdownliste Optionen für Datenbankskripterstellung an, ob die automatisch generierten Skripts für diese Datenbank nur die Datenbankstrukturen (Nur Schema), die Strukturen und die Daten (Schema und Daten) oder nur die Daten (Nur Daten) in der Zielumgebung duplizieren sollen.
Hinweis
Wenn Sie die standardmäßige ASP.NET-Mitgliedschaftsdatenbank bereitstellen und die auf dem Entwicklungscomputer erstellten Konten nicht bereitstellen möchten, sind zusätzliche Schritte erforderlich.Da das Mitgliedschaftssystem Daten aus einer der Tabellen erfordert, ist es nicht möglich, lediglich Nur Schema auszuwählen.Weitere Informationen finden Sie unter Gewusst wie: Bereitstellen der ASP.NET-Mitgliedschaftsdatenbank ohne Einbeziehung von Benutzerkonten.
Hinweis
Wenn Sie Nur Schema oder Schema und Daten auswählen und wenn Benutzer oder Rollen in der Datenbank erstellt werden, kann die Bereitstellung möglicherweise aufgrund unzureichender Berechtigungen zum Erstellen von Benutzern oder Rollen in der Zieldatenbank scheitern.Weitere Informationen zu diesem Fehler und dazu, wie Sie diesen Fehler beheben oder vermeiden können, finden Sie in der Frage zu den Datenbankbefehlen CREATE USER oder CREATE ROLE FAQ zur Bereitstellung von ASP.NET-Webanwendungsprojekten.
Wenn Sie benutzerdefinierte Datenbankskripts angeben möchten, die während der Bereitstellung in der Zieldatenbank ausgeführt werden sollen, fügen Sie sie dem Raster Datenbankskripts mit der Schaltfläche Skript hinzufügen hinzu.
Wenn Sie auf Skript hinzufügen klicken, wird das Dialogfeld Datei auswählen angezeigt. In diesem Dialogfeld können Sie ein Skript auswählen, das Sie geschrieben haben, und es dem Raster Datenbankskripts hinzufügen.
Wenn die Zeilen im Raster Datenbankskripts nicht in der Reihenfolge vorliegen, in der die Skripts ausgeführt werden sollen, ordnen Sie die Zeilen mit dem Pfeil nach oben und dem Pfeil nach unten neu an.
Fügen Sie der Web.config-Transformationsdatei für die bereitgestellte Buildkonfiguration Markup hinzu, das die Verbindungszeichenfolge für diese Datenbank in den Wert transformiert, der für die bereitgestellte Webanwendung erforderlich ist.
Informationen zum Erstellen und Bearbeiten von Web.config-Transformationsdateien finden Sie unter Gewusst wie: Transformieren von "Web.config" beim Bereitstellen eines Webanwendungsprojekts.
Wenn das automatisch generierte Skript in einer Transaktion nicht ausgeführt werden soll, bearbeiten Sie die Projektdatei, um das Transacted-Attribut des Source-Elements des Skripts auf False festzulegen. Weitere Informationen zum Bearbeiten der Projektdatei finden Sie unter Gewusst wie: Bearbeiten der Bereitstellungseinstellungen in der Projektdatei.
Standardmäßig wird das automatisch generierte Skript in einer Transaktion ausgeführt. Wenn Sie eine sehr große Datenbank bereitstellen, möchten Sie dieses Skript möglicherweise nicht in einer Transaktion ausführen, um die Leistung zu verbessern. Benutzerdefinierte Skripts werden standardmäßig nicht in Transaktionen ausgeführt.
Hinweis
Wenn mehrere Skripts für eine Datenbank ausgeführt werden, legen Sie für alle Skripts den gleichen Wert für das Transacted-Attribut fest.Die Kombination von True- und False-Werten kann während der Bereitstellung zu einem Timeoutfehler führen.
Wenn es sich bei der Quell- oder Zieldatenbank um SQL Azure handelt und Sie ein automatisch generiertes Skript ausführen, bearbeiten Sie das PreSource-Element des Skripts in der Projektdatei, indem Sie die folgenden Attribute hinzufügen:
targetDatabaseEngineType=SQLAzureDatabase
targetServerVersion=version100
prefetchObjects=false
Legen Sie targetServerVersion für SQL 2008 auf version100 oder für SQL 2008 R2 auf version105 fest. Weitere Informationen zum Bearbeiten der Projektdatei finden Sie unter Gewusst wie: Bearbeiten der Bereitstellungseinstellungen in der Projektdatei.
Erneute Bereitstellung ohne Datenbankänderungen
Nach der Erstbereitstellung einer Webanwendung kann es erforderlich sein, die Anwendung erneut bereitzustellen. Im folgenden Verfahren wird beschrieben, wie Datenbankupdates bei der erneuten Bereitstellung der Webanwendung für alle Datenbanken oder für ausgewählte Datenbanken deaktiviert werden.
So führen Sie eine erneute Bereitstellung ohne Datenbankänderungen aus
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen und dann auf Eigenschaften.
Klicken Sie auf die Registerkarte Web packen/veröffentlichen.
Die Registerkarte Web packen/veröffentlichen wird wie in der folgenden Abbildung dargestellt angezeigt:
Vergewissern Sie sich, dass die Buildkonfiguration, für die Sie Einstellungen ändern möchten, in der Dropdownliste Konfiguration ausgewählt ist.
Wenn Sie die Aktualisierung für alle Datenbanken im Raster Datenbankeinträge deaktivieren möchten, deaktivieren Sie das Kontrollkästchen Alle auf der Registerkarte "SQL packen/veröffentlichen" konfigurierten Datenbanken einschließen.
Wenn dieses Kontrollkästchen deaktiviert ist, werden während der Bereitstellung keine SQL-Skripts ausgeführt.
Wenn Sie die Aktualisierung für ausgewählte Datenbanken im Raster Datenbankeinträge deaktivieren möchten, deaktivieren Sie das Kontrollkästchen Bereitstellen für jede Datenbank, für die keine Skripts ausgeführt werden sollen.
Wenn diese Kontrollkästchen deaktiviert sind, werden während der Bereitstellung keine SQL-Skripts für die angegebenen Datenbanken ausgeführt.
Erneute Bereitstellung mit automatisch generierten Skripts
Nach der Bereitstellung einer Datenbank mit automatisch generierten Skripts kann es vorkommen, dass Sie Datenbankänderungen vornehmen und dann die Datenbank erneut bereitstellen möchten. In diesem Fall muss der Bereitstellungsprozess vorhandene Datenbankobjekte löschen, bevor die Objekte erneut erstellt werden. Im folgenden Verfahren wird beschrieben, wie Sie angeben, dass automatisch generierte Skripts Drop-SQL-Anweisungen enthalten sollten.
Warnung
Alle Daten, die in der Zielumgebung eingegeben wurden, gehen verloren.
So stellen Sie eine Datenbank erneut mit automatisch generierten Skripts bereit
Wenn das automatisch generierte Skript Datenbankobjekte wie Tabellen, Ansichten und gespeicherte Prozeduren einzeln entfernen soll, bevor es neue Versionen dieser Objekte erstellt, bearbeiten Sie die Projektdatei, um das ScriptDropsFirst-Attribut des PreSource-Elements des automatisch generierten Skripts auf True festzulegen. Weitere Informationen zum Bearbeiten der Projektdatei finden Sie unter Gewusst wie: Bearbeiten der Bereitstellungseinstellungen in der Projektdatei.
Durch diese Einstellung wird für jedes Datenbankobjekt, das aus der Quelldatenbank erstellt werden soll, eine Drop-SQL-Anweisung generiert. Diese Drop-Anweisung für ein Objekt wird direkt vor der Anweisung ausgeführt, durch die das Objekt erstellt wird. Wenn ein Objekt in der Zieldatenbank, aber nicht in der Quelldatenbank vorhanden ist (was in der Regel darauf zurückzuführen ist, dass es nach der vorherigen Bereitstellung aus der Quelldatenbank entfernt wurde), wird keine Drop-Anweisung für das Objekt generiert.
Wenn Sie vor dem erneuten Erstellen der einzelnen Datenbankobjekte die gesamte Datenbank löschen möchten, legen Sie das DropDestinationDatabase-Attribut des Source-Elements auf True fest.
Hinweis
Stellen Sie sicher, dass die verwendeten Anmeldeinformationen über ausreichende Berechtigungen sowohl zum Löschen als auch zum erneuten Erstellen der Datenbank verfügen.Wenn die Anmeldeinformationen der db_owner-Rolle zugewiesen sind, aber nicht der dbcreator-Rolle, können Sie die Datenbank vielleicht löschen, aber nach dem Löschen nicht erneut erstellen.Bei einer Bereitstellung bei einem Hostinganbieter ist es unwahrscheinlich, dass die Anmeldeinformationen, die Sie erhalten haben, der dbcreator-Rolle zugewiesen werden.
Bereitstellen von Datenbankänderungen mithilfe benutzerdefinierter Skripts
Nachdem Sie eine Datenbank bereitgestellt haben, nehmen Sie ggf. Datenbankänderungen vor und möchten dann nur die Änderungen in der Zieldatenbank bereitstellen. Auf diese Weise können Sie alle Daten beibehalten, die ggf. in der Zieldatenbank eingegeben wurden. Im folgenden Verfahren wird beschrieben, wie automatisch generierte Skripts deaktiviert und benutzerdefinierte Skripts zum Aktualisieren der Datenbank hinzugefügt werden.
Hinweis
In Visual Studio werden die Quell- und Zieldatenbanken nicht automatisch verglichen, um festzustellen, welche Änderungen am Schema oder an den Daten vorgenommen wurden.Die in der folgenden Prozedur beschriebene Methode ist die einzige Möglichkeit, Datenbankänderungen zu veröffentlichen.
So stellen Sie Änderungen an einer Datenbank ohne Datenverluste bereit
Erstellen Sie benutzerdefinierte Datenbankskripts, die die gewünschten Änderungen in der Zieldatenbank vornehmen.
Skripts, die Änderungen der Datenbankstruktur wiedergeben, können mithilfe von Datenbankprojekten automatisch generiert werden. Weitere Informationen finden Sie unter Arbeiten mit Datenbankprojekten.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie dann Eigenschaften aus.
Klicken Sie auf die Registerkarte Verpacken/Veröffentlichen - SQL.
Die Registerkarte SQL packen/veröffentlichen wird wie in der folgenden Abbildung dargestellt angezeigt:
Deaktivieren Sie im Raster Datenbankskripts in den Zeilen für Skripts, die nicht ausgeführt werden sollen, das Kontrollkästchen Einschließen.
Wenn Sie das Kontrollkästchen Daten und/oder Schema aus einer vorhandenen Datenbank extrahieren aktiviert haben, deaktivieren Sie das Kontrollkästchen Einschließen für das automatisch generierte Skript.
Fügen Sie mit der Schaltfläche Skript hinzufügen benutzerdefinierte Datenbankskripts für die ausgewählte Datenbank hinzu.
Wenn Sie auf Skript hinzufügen klicken, wird das Dialogfeld Datei auswählen angezeigt, in dem Sie ein von Ihnen geschriebenes Skript auswählen und es dem Raster Datenbankskripts hinzufügen können. Das Kontrollkästchen Einschließen ist standardmäßig aktiviert.
Wenn die Zeilen im Raster Datenbankskripts nicht in der Reihenfolge vorliegen, in der die Skripts ausgeführt werden sollen, können Sie die Zeilen mit dem Pfeil nach oben und dem Pfeil nach unten neu anordnen.
Siehe auch
Aufgaben
Konzepte
Gewusst wie: Bereitstellen eines Webanwendungsprojekts mit einem Webbereitstellungspaket