Freigeben über


Bereitstellen einer Datenbank (C#)

von Scott Mitchell

Die Bereitstellung einer ASP.NET Webanwendung erfordert das Abrufen der erforderlichen Dateien und Ressourcen aus der Entwicklungsumgebung in die Produktionsumgebung. Für datengesteuerte Webanwendungen umfasst dies das Datenbankschema und die Daten. Dieses Tutorial ist das erste in einer Reihe, in dem die Schritte untersucht werden, die für die erfolgreiche Bereitstellung der Datenbank aus der Entwicklungsumgebung in der Produktion erforderlich sind.

Einführung

Die Bereitstellung einer ASP.NET Webanwendung erfordert das Abrufen der erforderlichen Dateien und Ressourcen aus der Entwicklungsumgebung in die Produktionsumgebung. In den letzten sechs Tutorials haben wir uns mit der Bereitstellung einer einfachen Book Reviews-Webanwendung befasst. Diese Demowebsite bestand aus einer Reihe serverseitiger Ressourcen – ASP.NET Seiten, Konfigurationsdateien, einer Web.sitemap Datei usw. – zusammen mit clientseitigen Ressourcen wie Bildern und CSS-Dateien. Aber was ist mit datengesteuerten Webanwendungen? Welche zusätzlichen Schritte müssen ausgeführt werden, um eine Webanwendung bereitzustellen, die eine Datenbank verwendet?

In den nächsten Tutorials werden die Schritte behandelt, die zum Bereitstellen einer datengesteuerten Webanwendung erforderlich sind. In diesem Tutorial wird zunächst untersucht, wie Sie das Schema und den Inhalt einer Datenbank aus der Entwicklungsumgebung in die Produktionsumgebung abrufen, während sich das folgende Tutorial mit den erforderlichen Konfigurationsänderungen befasst. Im Anschluss untersuchen wir die Herausforderungen bei der Bereitstellung einer Datenbank, die die Application Services verwendet (Mitgliedschaft, Rollen, Profil usw.).

Überprüfen der aktualisierten Webanwendung für Buchüberprüfungen

Um die Bereitstellung einer datengesteuerten Webanwendung zu veranschaulichen, habe ich die Book Reviews-Webanwendung von einer einfachen, statischen Website auf eine datengesteuerte Website aktualisiert. Wie zuvor gibt es zwei Versionen der Anwendung im Download dieses Tutorials: eine, die das Webanwendungsprojektmodell verwendet, und eine, die das Websiteprojektmodell verwendet.

Die aktualisierte Book Reviews-Webanwendung verwendet eine SQL Server 2008 Express Edition-Datenbank, die im Ordner der Website App_Data (~/App_Data/Reviews.mdf) gespeichert ist. Wenn Sie SQL Server 2008 auf Ihrem Computer installiert haben, sollte die Demo ohne Fehler ausgeführt werden. Wenn Sie über eine ältere Version von SQL Server verfügen, können Sie entweder die kostenlose SQL Server 2008 Express Edition installieren oder die Datenbankskripts verwenden, die im Download dieses Tutorials verfügbar sind, um die Datenbank selbst zu erstellen.

Die Reviews.mdf Datenbank enthält vier Tabellen:

  • Genres – enthält einen Datensatz für jedes Genre, z. B. Technology, Fiction und Business.
  • Books – enthält einen Datensatz für jede Überprüfung mit Spalten wie Title, GenreId, ReviewDateund , und Review.
  • Authors - enthält Informationen zu jedem Autor, der zu einem überprüften Buch beigetragen hat.
  • BooksAuthors – eine Tabelle mit vielen Verknüpfungen, die angibt, welche Autoren welche Bücher geschrieben haben.

Abbildung 1 zeigt ein ER-Diagramm dieser vier Tabellen.

Die Datenbank der Book Reviews-Webanwendung besteht aus vier Tabellen.

Abbildung 1: Die Datenbank der Book Reviews-Webanwendung besteht aus vier Tabellen (Klicken Sie, um das bild in voller Größe anzuzeigen)

Die vorherige Version der Website "Buchbewertungen" hatte für jedes Buch eine separate ASP.NET Seite. Beispielsweise gab es eine Seite namens ~/Tech/TYASP35.aspx , die die Überprüfung für Teach Yourself ASP.NET 3.5 in 24 Stunden enthielt. In dieser neuen datengesteuerten Version der Website werden die Rezensionen in der Datenbank gespeichert und eine einzelne ASP.NET Seite, Review.aspx?ID=bookId, auf der die Überprüfung für das angegebene Buch angezeigt wird. Ebenso gibt es eine Genre.aspx?ID=genreId-Seite , die die überprüften Bücher im angegebenen Genre auflistet.

Abbildungen 2 und 3 zeigen die Genre.aspx Seiten und Review.aspx in Aktion. Notieren Sie sich die URL in der Adressleiste für jede Seite. In Abbildung 2 ist es Genre.aspx?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e. Da 85d164ba-1123-4c47-82a0-c8ec75de7e0e der Wert für das GenreId Technologiegenre ist, lautet die Überschrift der Seite "Technology Reviews" und die Aufzählung der Bewertungen auf der Website, die unter dieses Genre fallen.

Seite

Abbildung 2: Seite "Technologiegenre" (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)

Die Überprüfung für

Abbildung 3: Die Überprüfung für Teach Yourself ASP.NET 3.5 in 24 Stunden (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Die Webanwendung Buchbewertungen enthält auch einen Verwaltungsabschnitt, in dem Administratoren Genres, Rezensionen und Autoreninformationen hinzufügen, bearbeiten und löschen können. Derzeit kann jeder Besucher auf den Verwaltungsabschnitt zugreifen. In einem zukünftigen Tutorial fügen wir Unterstützung für Benutzerkonten hinzu und lassen nur autorisierte Benutzer auf den Verwaltungsseiten zu.

Wenn Sie die Anwendung Book Reviews herunterladen, beachten Sie bitte, dass ihr Zweck darin besteht, die Bereitstellung einer datengesteuerten Anwendung zu veranschaulichen. Es weist keine bewährten Methoden auf, was das Anwendungsdesign angeht. Beispielsweise gibt es keine separate Datenzugriffsebene (Data Access Layer, DAL). Die ASP.NET Seiten kommunizieren direkt mit der Datenbank über das SqlDataSource-Steuerelement oder ADO.NET Code in ihren CodeBehind-Klassen. Einen ausführlicheren Einblick in das Erstellen von datengesteuerten Anwendungen mithilfe einer mehrstufigen Architektur finden Sie in meinen Tutorials zum Arbeiten mit Daten.

Datenbanken zur Entwicklung im Vergleich zur Produktion

Wenn Sie mit der Entwicklung für eine datengesteuerte Webanwendung beginnen, müssen Sie eine Datenbank Verbindungszeichenfolge angeben, die die Anwendungsdetails zum Herstellen einer Verbindung mit der Datenbank bereitstellt. Dieser Verbindungszeichenfolge gibt unter anderem den Datenbankserver, den Datenbanknamen und Sicherheitsinformationen an. In den meisten Fällen unterscheidet sich die Datenbank, die von der Anwendung während der Entwicklung verwendet wird, von der Datenbank, die in der Produktion verwendet wird. Es gibt viele Vorteile der Verwendung verschiedener Datenbanken für die Entwicklung im Vergleich zur Produktion. Wenn Sie eine andere Datenbank in der Entwicklung haben, müssen Sie sich keine Gedanken über das versehentliche Ändern oder Löschen von Livedaten machen. Außerdem können Sie Dummytestdaten einfügen oder breaking Änderungen am Datenmodell vornehmen, ohne sich um die Auswirkungen auf die Anwendung in der Produktion kümmern zu müssen. Der Nachteil einer anderen Datenbank in den Entwicklungs- und Produktionsumgebungen besteht darin, dass bei der Bereitstellung der Anwendung auch die Datenbank und alle relevanten Änderungen am Schema oder den Daten der Datenbank bereitgestellt werden müssen.

Vor der ersten Bereitstellung gibt es nur einen instance der Datenbank, und der instance befindet sich in der Entwicklungsumgebung. Bei der erstmaligen Bereitstellung der Anwendung in der Produktion müssen wir nicht nur die erforderlichen server- und clientseitigen Dateien kopieren, sondern auch die Datenbank aus der Entwicklungsumgebung in die Produktionsumgebung kopieren. Hier stehen wir jetzt mit der Book Reviews-Webanwendung : Die Datenbank befindet sich im App_Data Ordner in unserer Entwicklungsumgebung, wurde aber noch nicht in die Produktionsumgebung gepusht.

Nachdem die Anwendung bereitgestellt wurde, gibt es zwei Kopien der Datenbank. Wenn die Anwendung gereift ist, können neue Features hinzugefügt werden, die eine Änderung am Datenmodell erfordern (z. B. das Hinzufügen neuer Spalten zu vorhandenen Tabellen, das Vornehmen von Änderungen an vorhandenen Spalten, das Hinzufügen neuer Tabellen usw.). Bei der nächsten Bereitstellung der Webanwendung müssen die Änderungen, die seit der letzten Bereitstellung auf die Datenbank in der Entwicklungsumgebung angewendet werden, auf die Produktionsdatenbank angewendet werden. Einige Strategien zum Verwalten dieses Prozesses werden in einem zukünftigen Tutorial erläutert. Dieses Tutorial konzentriert sich auf die Bereitstellung der gesamten Datenbank aus der Entwicklungsumgebung in der Produktion.

Bereitstellen der Datenbank in der Produktionsumgebung

Im weiteren Verlauf dieses Tutorials wird erläutert, wie Sie die Datenbank aus der Entwicklungsumgebung in der Produktionsumgebung bereitstellen. Wenn Sie folgen, müssen Sie sicherstellen, dass Ihr Konto bei Ihrem Webhostanbieter microsoft SQL Server Datenbankunterstützung enthält. Sie müssen auch einige Informationen zur Hand haben, nämlich den Namen des Datenbankservers, den Datenbanknamen sowie den Benutzernamen und das Kennwort, die zum Herstellen einer Verbindung mit der Datenbank verwendet werden.

Wie bereits in diesem Tutorial erwähnt, handelt es sich bei der Datenbank der Book Reviews-Website um eine SQL Server 2008 Express Edition-Datenbank, die App_Data im Ordner gespeichert ist. Die Bereitstellung einer solchen Datenbank wäre so einfach wie das Kopieren des App_Data Ordners aus der Entwicklungsumgebung in die Produktionsumgebung. Die meisten Webhostanbieter unterstützen jedoch aus Sicherheitsgründen das Hosten von Datenbanken im App_Data Ordner nicht. Stattdessen stellen Webhosts ein Konto auf einem SQL Server Datenbankserver in ihrer Umgebung bereit. Um die Datenbank aus Ihrer Entwicklungsumgebung in der Produktionsumgebung bereitzustellen, muss Ihre Datenbank auf dem Datenbankserver Ihres Webhosts registriert werden.

Wie können Sie Ihre Datenbank von der Entwicklungsumgebung in die Produktionsumgebung bringen? Je nachdem, welche Dienste Ihr Webhost anbietet, gibt es mehrere Möglichkeiten, dies zu erreichen. Bei einigen Hosts, z. B. DiscountASP.NET, können Sie eine Sicherung der Datenbank oder der eigentlichen .mdf Datei auf Ihre Website ftpen und dann über die Systemsteuerung die Sicherungsdatei wiederherstellen oder die .mdf Datei an den SQL Server Datenbankserver anfügen. Mit solchen Tools ist die Bereitstellung der Datenbank so einfach wie das Kopieren des App_Data Ordners in die Produktionsumgebung und das Anschließende Anfügen über den Systemsteuerung. Dies ist vielleicht die einfachste und schnellste Möglichkeit, Ihre Datenbank zum ersten Mal zu veröffentlichen.

Ein weiterer Ansatz besteht darin, den Datenbankveröffentlichungs-Assistenten zu verwenden. Der Datenbankveröffentlichungs-Assistent ist eine Windows-Desktopanwendung, die die SQL-Befehle generiert, um das Datenbankschema zu erstellen – die Tabellen, gespeicherten Prozeduren, Ansichten, benutzerdefinierten Funktionen usw. – und optional die Daten in den zugehörigen Tabellen. Sie können dann über SQL Server Management Studio eine Verbindung mit dem Datenbankserver Ihres Webhostanbieters herstellen und dann dieses Skript ausführen, um die Datenbank in der Produktion zu duplizieren. Wenn Ihr Webhostanbieter die Datenbankveröffentlichungsdienste von Microsoft unterstützt, können Sie das vom Datenbankveröffentlichungs-Assistenten generierte Skript automatisch auf dem Datenbankserver in Ihrem Namen ausführen lassen. Da der Datenbankveröffentlichungs-Assistent ein Skript generiert, das das Schema und die Daten der Datenbank erstellt, funktioniert er unabhängig davon, ob Ihr Webhostanbieter Funktionen wie das Anfügen einer hochgeladenen .mdf Datei bietet.

Generieren der SQL-Befehle zum Erstellen des Datenbankschemas und der Daten mithilfe des Datenbankveröffentlichungs-Assistenten

Führen Sie die Verwendung des Datenbankveröffentlichungs-Assistenten durch, um die Buchbewertungsdatenbank in der Produktion bereitzustellen. Wenn Sie Visual Studio 2008 oder höher verwenden, ist der Datenbankveröffentlichungs-Assistent bereits installiert.

Öffnen Sie Visual Studio, und navigieren Sie zur Reviews.mdf Datenbank. Wenn Sie Visual Web Developer verwenden, wechseln Sie zum Datenbank-Explorer. Wenn Sie Visual Studio verwenden, verwenden Sie den Server Explorer. Abbildung 4 zeigt die Reviews.mdf Datenbank im Datenbank-Explorer in Visual Web Developer. Wie Abbildung 4 zeigt, besteht die Reviews.mdf Datenbank aus vier Tabellen, drei gespeicherten Prozeduren und einer benutzerdefinierten Funktion.

Suchen Sie die Datenbank im Datenbank-Explorer- oder Server-Explorer

Abbildung 4: Suchen Sie die Datenbank im datenbankbasierten Explorer- oder Server-Explorer (Klicken Sie hier, um das vollständige Bild anzuzeigen)

Klicken Sie mit der rechten Maustaste auf den Datenbanknamen, und wählen Sie im Kontextmenü die Option "Im Anbieter veröffentlichen" aus. Dadurch wird der Datenbankveröffentlichungs-Assistent gestartet (siehe Abbildung 5). Klicken Sie auf Weiter, um über den Begrüßungsbildschirm zu gelangen.

Screenshot des Fensters

Abbildung 5: Begrüßungsbildschirm des Assistenten für die Datenbankveröffentlichung (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Der zweite Bildschirm im Assistenten listet die Datenbanken auf, auf die der Datenbankveröffentlichungs-Assistent zugreifen kann, und Sie können auswählen, ob alle Objekte in der ausgewählten Datenbank skripts erstellt oder welche Objekte skripts verwendet werden sollen. Wählen Sie die entsprechende Datenbank aus, und lassen Sie die Option "Skriptieren aller Objekte in der ausgewählten Datenbank" aktiviert.

Hinweis

Wenn Sie die Fehlermeldung "Es gibt keine Objekte in Datenbankname der Typen, die von diesem Assistenten skriptfähig sind" erhalten, wenn Sie auf dem bildschirm in Abbildung 6 gezeigten Bildschirm auf Weiter klicken, stellen Sie sicher, dass der Pfad zu Ihrer Datenbankdatei nicht übermäßig lang ist. Es wurde festgestellt, dass dieser Fehler auftreten kann, wenn der Pfad zur Datenbankdatei zu lang ist.

Screenshot des Fensters

Abbildung 6: Begrüßungsbildschirm des Datenbankveröffentlichungs-Assistenten (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Auf dem nächsten Bildschirm können Sie eine Skriptdatei generieren oder, wenn Ihr Webhost dies unterstützt, die Datenbank direkt auf dem Datenbankserver Ihres Webhostanbieters veröffentlichen. Wie Abbildung 7 zeigt, wird das Skript in die Datei C:\REVIEWS.MDF.sqlgeschrieben.

Skripten der Datenbank in eine Datei oder direktes Veröffentlichen der Datenbank in Ihrem Webhostanbieter

Abbildung 7: Skripts für die Datenbank in eine Datei oder Direkt in Ihrem Webhostanbieter veröffentlichen (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Auf dem folgenden Bildschirm werden Sie zur Eingabe einer Vielzahl von Skriptoptionen aufgefordert. Sie können angeben, ob das Skript Drop-Anweisungen enthalten soll, um diese vorhandenen Objekte zu entfernen. Dies ist standardmäßig auf True festgelegt, was bei der erstmaligen Bereitstellung einer Datenbank in Ordnung ist. Sie können auch angeben, ob die Zieldatenbank SQL Server 2000, SQL Server 2005 oder SQL Server 2008 ist. Schließlich können Sie angeben, ob das Schema und die Daten, nur die Daten oder nur das Schema skripten sollen. Das Schema ist die Auflistung von Datenbankobjekten, Tabellen, gespeicherten Prozeduren, Ansichten usw. Die Daten sind die Informationen, die sich in den Tabellen befinden.

Wie Abbildung 8 veranschaulicht, habe ich den Assistenten so konfiguriert, dass vorhandene Datenbankobjekte gelöscht, Skripts für eine SQL Server 2008-Datenbank generiert und sowohl das Schema als auch die Daten veröffentlicht werden.

Angeben der Veröffentlichungsoptionen

Abbildung 8: Angeben der Veröffentlichungsoptionen (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Auf den beiden letzten Bildschirmen werden die Aktionen zusammengefasst, die ausgeführt werden sollen, und dann die status der Skripterstellung angezeigt. Das Nettoergebnis der Ausführung des Assistenten ist, dass wir über eine Skriptdatei verfügen, die die SQL-Befehle enthält, die erforderlich sind, um die Datenbank in der Produktion zu erstellen und sie mit den gleichen Daten wie bei der Entwicklung aufzufüllen.

Ausführen der SQL-Befehle in der Produktionsumgebungsdatenbank

Nachdem wir nun über das Skript verfügen, das die SQL-Befehle zum Erstellen der Datenbank und der zugehörigen Daten enthält, bleibt nur noch das Ausführen des Skripts in der Produktionsdatenbank. Einige Webhostanbieter bieten in ihren Systemsteuerung ein Textfeld an, in dem Sie SQL-Befehle eingeben können, die in Ihrer Datenbank ausgeführt werden sollen. Wenn Sie über eine sehr große Skriptdatei verfügen, funktioniert diese Option möglicherweise nicht (die REVIEWS.MDF.sql Skriptdatei ist über 425 KB groß, für instance).

Ein besserer Ansatz besteht darin, mithilfe von SQL Server Management Studio (SSMS) eine direkte Verbindung mit dem Produktionsdatenbankserver herzustellen. Wenn Sie eine Nicht-Express Edition von SQL Server auf Ihrem Computer installiert haben, haben Sie wahrscheinlich bereits SSMS installiert. Andernfalls können Sie eine kostenlose Kopie von SQL Server Management Studio Express Edition herunterladen und installieren.

Starten Sie SSMS, und stellen Sie mithilfe der von Ihrem Webhostanbieter bereitgestellten Informationen eine Verbindung mit dem Datenbankserver Ihres Webhosts her.

Screenshot des Dialogfelds Verbindung mit Server herstellen, in dem die Datenserverinformationen des Webhosts in den Textfelder angezeigt werden.

Abbildung 9: Herstellen einer Verbindung mit dem Datenbankserver Ihres Webhostanbieters (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Erweitern Sie die Registerkarte Datenbanken, und suchen Sie Ihre Datenbank. Klicken Sie in der oberen linken Ecke der Symbolleiste auf die Schaltfläche Neue Abfrage, fügen Sie die SQL-Befehle aus der skriptdatei ein, die vom Datenbankveröffentlichungs-Assistenten erstellt wurde, und klicken Sie auf die Schaltfläche Ausführen, um diese Befehle auf dem Produktionsdatenbankserver auszuführen. Wenn Ihre Skriptdatei besonders groß ist, kann es einige Minuten dauern, bis die Befehle ausgeführt werden.

Screenshot des Microsoft SQL Server Management Studio-Fensters, das zeigt, dass die Befehle aus der Skriptdatei auf dem Produktionsserver ausgeführt werden.

Abbildung 10: Herstellen einer Verbindung mit dem Datenbankserver Ihres Webhostanbieters (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Das ist alles, was es gibt! An diesem Punkt wurde die Entwicklungsdatenbank in die Produktion dupliziert. Wenn Sie die Datenbank in SSMS aktualisieren, sollten die neuen Datenbankobjekte angezeigt werden. Abbildung 11 zeigt die Tabellen der Produktionsdatenbank, gespeicherte Prozeduren und benutzerdefinierte Funktionen, die die In der Entwicklungsdatenbank Spiegel. Da wir den Datenbankveröffentlichungs-Assistenten angewiesen haben, die Daten zu veröffentlichen, verfügen die Tabellen der Produktionsdatenbank über dieselben Daten wie die Tabellen der Entwicklungsdatenbank zum Zeitpunkt der Ausführung des Assistenten. Abbildung 12 zeigt die Daten in der Books Tabelle in der Produktionsdatenbank.

Die Datenbankobjekte wurden in der Produktionsdatenbank dupliziert.

Abbildung 11: Die Datenbankobjekte wurden in der Produktionsdatenbank dupliziert (Klicken Sie hier, um das vollständige Bild anzuzeigen)

Die Produktionsdatenbank enthält dieselben Daten wie in der Entwicklungsdatenbank.

Abbildung 12: Die Produktionsdatenbank enthält dieselben Daten wie in der Entwicklungsdatenbank (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Zu diesem Zeitpunkt haben wir nur die Entwicklungsdatenbank für die Produktion bereitgestellt. Wir haben uns noch nicht mit der Bereitstellung der Webanwendung selbst befasst oder untersucht, welche Konfigurationsänderungen erforderlich sind, damit die Anwendung in der Produktion die Produktionsdatenbank verwendet. Wir behandeln diese Probleme im nächsten Tutorial!

Zusammenfassung

Die Bereitstellung einer datengesteuerten Webanwendung erfordert das Kopieren der datenbank, die während der Entwicklung verwendet wird, in die Produktionsumgebung. Viele Webhostanbieter bieten Tools an, um die Bereitstellung einer Datenbank zu vereinfachen. Mit DiscountASP.NET können Sie beispielsweise Ihre Datenbankdatei .mdf (oder eine Sicherung) ftpen und dann die Datenbank über den Systemsteuerung an den Datenbankserver anfügen. Eine weitere Option, die unabhängig davon funktioniert, welche Features Ihr Webhostanbieter bietet, ist das Tool zum Veröffentlichen von Datenbanken von Microsoft, das ein Skript mit SQL-Befehlen generiert, um das Schema und die Daten der Entwicklungsdatenbank zu erstellen. Nachdem dieses Skript generiert wurde, können Sie es in der Produktionsdatenbank ausführen.

Nachdem sich die Datenbank der Book Reviews-Webanwendung in produktion befindet, können wir die Anwendung bereitstellen. Die Konfigurationsinformationen der Webanwendung geben jedoch die Verbindungszeichenfolge für die Datenbank an, und Verbindungszeichenfolge auf die Entwicklungsdatenbank verweist. Wir müssen diese Verbindungszeichenfolge Informationen aktualisieren, wenn der Standort in der Produktion bereitgestellt wird. Im nächsten Tutorial werden diese Konfigurationsunterschiede untersucht und die Schritte erläutert, die zum Veröffentlichen der datengesteuerten Buchüberprüfungswebsite in der Produktion erforderlich sind.

Viel Spaß beim Programmieren!

Weitere Informationen

Weitere Informationen zu den in diesem Tutorial erläuterten Themen finden Sie in der folgenden Ressource: