Bereitstellen einer Datenbank (VB)
von Scott Mitchell
Die Bereitstellung einer ASP.NET Webanwendung umfasst das Abrufen der erforderlichen Dateien und Ressourcen aus der Entwicklungsumgebung in die Produktionsumgebung. Bei datengesteuerten Webanwendungen umfasst dies das Datenbankschema und die Daten. Dieses Tutorial ist das erste in einer Reihe, in der 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 umfasst das Abrufen der erforderlichen Dateien und Ressourcen aus der Entwicklungsumgebung in die Produktionsumgebung. Im Verlauf der letzten sechs Tutorials haben wir uns mit der Bereitstellung einer einfachen Book Reviews-Webanwendung befasst. Diese Demowebsite bestand aus einer Reihe von serverseitigen 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. Anschließend untersuchen wir die Herausforderungen bei der Bereitstellung einer Datenbank, die die Anwendungsdienste (Mitgliedschaft, Rollen, Profil usw.) verwendet.
Ü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 Version, 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 App_Data
Website (~/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 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 wieTitle
,GenreId
,ReviewDate
undReview
.Authors
- enthält Informationen zu jedem Autor, der zu einem überarbeiteten Buch beigetragen hat.BooksAuthors
– eine m:n-Jointabelle, die angibt, welche Autoren welche Bücher geschrieben haben.
Abbildung 1 zeigt ein ER-Diagramm dieser vier Tabellen.
Abbildung 1: Die Datenbank der Book Reviews-Webanwendung besteht aus vier Tabellen (Klicken Sie hier, 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 sind die Überprüfungen in der Datenbank und eine einzelne ASP.NET Seite Review.aspx?ID=bookId gespeichert, 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 GenreId
Wert für das Technologiegenre ist, lautet die Überschrift der Seite "Technology Reviews" und die Aufzählungsliste listet die Rezensionen auf der Website auf, die unter dieses Genre fallen.
Abbildung 2: Seite "Technologiegenre" (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Abbildung 3: The Review for Teach Yourself ASP.NET 3.5 in 24 Stunden (Hier klicken, 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 werden wir Unterstützung für Benutzerkonten hinzufügen und nur autorisierte Benutzer auf den Verwaltungsseiten zulassen.
Wenn Sie die Anwendung "Buchbewertungen" herunterladen, sollten Sie bedenken, dass ihr Zweck darin besteht, die Bereitstellung einer datengesteuerten Anwendung zu veranschaulichen. Es weist keine bewährten Methoden auf, was den Anwendungsentwurf betrifft. 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 den Tutorials 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 versehentliches Ändern oder Löschen von Livedaten machen. Außerdem können Sie Dummytestdaten einfügen oder Breaking Changes am Datenmodell vornehmen, ohne sich gedanken über die Auswirkungen auf die Anwendung in der Produktion machen 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 eine instance der Datenbank, und diese instance befindet sich in der Entwicklungsumgebung. Bei der erstmaligen Bereitstellung der Anwendung in der Produktion müssen wir nicht nur die erforderlichen serverseitigen und clientseitigen Dateien kopieren, sondern auch die Datenbank aus der Entwicklungsumgebung in die Produktionsumgebung kopieren. Dies ist der Ort, an dem wir gerade mit der Webanwendung Book Reviews stehen . 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 reift, können neue Features hinzugefügt werden, die eine Änderung des Datenmodells erfordern (z. B. hinzufügen neuer Spalten zu vorhandenen Tabellen, Vornehmen von Änderungen an vorhandenen Spalten, Hinzufügen neuer Tabellen usw.). Wenn die Webanwendung als Nächstes bereitgestellt wird, müssen die Änderungen, die seit der letzten Bereitstellung auf die Datenbank in der Entwicklungsumgebung angewendet wurden, 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 erfahren Sie, 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 also 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 übertragen 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 die 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 zum Erstellen des Datenbankschemas generiert – 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 microsoft s Database Publishing Services unterstützt, können Sie das skript, das vom Datenbankveröffentlichungs-Assistenten generiert wird, 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 Features 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
Hier erfahren Sie, wie Sie den Datenbankveröffentlichungs-Assistenten verwenden, um die Datenbank "Book Reviews" 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.
Abbildung 4: Suchen der Datenbank im datenbankbasierten Explorer- oder Server-Explorer (Klicken Sie hier, um das Bild in voller Größe 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.
Abbildung 5: Begrüßungsbildschirm des Datenbankveröffentlichungs-Assistenten (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Auf dem zweiten Bildschirm des Assistenten werden die Datenbanken aufgelistet, auf die der Datenbankveröffentlichungs-Assistent zugreifen kann, und Sie können auswählen, ob ein Skript für alle Objekte in der ausgewählten Datenbank erstellt oder welche Objekte skripts erstellt 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 Beim Klicken auf dem Bildschirm in Abbildung 6 die Fehlermeldung "Es gibt keine Objekte in DatenbankdatenbankName der Typen gibt, die von diesem Assistenten skriptfähig sind" angezeigt wird, stellen Sie sicher, dass der Pfad zu Ihrer Datenbankdatei nicht übermäßig lang ist. Dieser Fehler kann auftreten, wenn der Pfad zur Datenbankdatei zu lang ist.
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 die Datenbank direkt auf dem Datenbankserver Ihres Webhostanbieters veröffentlichen, sofern dies von Ihrem Webhost unterstützt wird. Wie abbildung 7 zeigt, wird das Skript in die Datei C:\REVIEWS.MDF.sql
geschrieben.
Abbildung 7: Skripterstellung für die Datenbank in eine Datei oder Direktes Veröffentlichen auf Ihrem Webhostanbieter (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Auf dem folgenden Bildschirm werden Sie aufgefordert, eine Vielzahl von Skriptoptionen einzugeben. 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 erstellt werden sollen. Das Schema ist die Auflistung von Datenbankobjekten, Tabellen, gespeicherten Prozeduren, Sichten usw. Die Daten sind die Informationen, die sich in den Tabellen befinden.
Wie Abbildung 8 veranschaulicht, wurde der Assistent 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.
Abbildung 8: Angeben der Veröffentlichungsoptionen (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Die letzten beiden Bildschirme fassen die Aktionen zusammen, die ausgeführt werden sollen, und zeigen dann die status der Skripterstellung an. 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 mit denselben 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, müssen Sie das Skript in der Produktionsdatenbank ausführen. Einige Webhostanbieter bieten in ihren Systemsteuerung ein Textfeld an, in dem Sie SQL-Befehle eingeben können, die für Ihre 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 für instance über 425 KB groß).
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, ist SSMS wahrscheinlich bereits 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.
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.
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 Tabellen der Produktionsdatenbank 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 der Produktionsdatenbank.
Abbildung 11: Die Datenbankobjekte wurden in der Produktionsdatenbank dupliziert (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Abbildung 12: Die Produktionsdatenbank enthält die gleichen Daten wie in der Entwicklungsdatenbank (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Zu diesem Zeitpunkt haben wir die Entwicklungsdatenbank nur 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. Diese Probleme werden im nächsten Tutorial behandelt!
Zusammenfassung
Zum Bereitstellen einer datengesteuerten Webanwendung muss die während der Entwicklung verwendete Datenbank in die Produktionsumgebung kopiert werden. Viele Webhostanbieter bieten Tools zur Vereinfachung des Bereitstellungsprozesses einer Datenbank an. Mit DiscountASP.NET können Sie beispielsweise Ihre Datenbankdatei .mdf
(oder eine Sicherung) ftpen und die Datenbank dann über den Systemsteuerung an den Datenbankserver anfügen. Eine weitere Option, die unabhängig davon funktioniert, welche Features Ihr Webhostanbieter bietet, ist das Tool des Assistenten 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 der Produktion befindet, können wir die Anwendung bereitstellen. Die Konfigurationsinformationen der Webanwendung geben jedoch die Verbindungszeichenfolge für die Datenbank an, und Verbindungszeichenfolge verweist auf die Entwicklungsdatenbank. Wir müssen diese Verbindungszeichenfolge Informationen aktualisieren, wenn sie den Standort in der Produktion bereitstellen. Im nächsten Tutorial werden diese Konfigurationsunterschiede untersucht und die Schritte erläutert, die zum Veröffentlichen der datengesteuerten Buchprü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: