Freigeben über


Bereitstellen einer ASP.NET Webanwendung mit SQL Server Compact mithilfe von Visual Studio oder Visual Web Developer: Migrieren zu SQL Server – 10 von 12

von Tom Dykstra

Herunterladen des Starterprojekts

In dieser Reihe von Tutorials erfahren Sie, wie Sie mithilfe von Visual Studio 2012 RC oder Visual Studio Express 2012 RC für Web ein ASP.NET Webanwendungsprojekt bereitstellen (veröffentlichen), das eine SQL Server Compact-Datenbank enthält. Sie können visual Studio 2010 auch verwenden, wenn Sie das Web Publish Update installieren. Eine Einführung in die Reihe finden Sie im ersten Tutorial der Reihe.

Ein Tutorial, das bereitstellungsfeatures zeigt, die nach der RC-Version von Visual Studio 2012 eingeführt wurden, zeigt, wie SQL Server anderen Editionen als SQL Server Compact bereitgestellt werden, und zeigt, wie sie in Azure App Service Web-Apps bereitgestellt werden, finden Sie unter ASP.NET Webbereitstellung mit Visual Studio.

Überblick

In diesem Tutorial erfahren Sie, wie Sie von SQL Server Compact zu SQL Server migrieren. Ein Grund hierfür könnte sein, dass Sie SQL Server Features nutzen, die SQL Server Compact nicht unterstützt, z. B. gespeicherte Prozeduren, Trigger, Sichten oder Replikation. Weitere Informationen zu den Unterschieden zwischen SQL Server Compact und SQL Server finden Sie im Tutorial Bereitstellen von SQL Server Compact.

SQL Server Express im Vergleich zu vollständigen SQL Server für die Entwicklung

Nachdem Sie sich für ein Upgrade auf SQL Server entschieden haben, können Sie SQL Server oder SQL Server Express in Ihren Entwicklungs- und Testumgebungen verwenden. Zusätzlich zu den Unterschieden bei der Toolunterstützung und den Features der Datenbank-Engine gibt es Unterschiede bei den Anbieterimplementierungen zwischen SQL Server Compact und anderen Versionen von SQL Server. Diese Unterschiede können dazu führen, dass derselbe Code unterschiedliche Ergebnisse generiert. Wenn Sie sich daher entscheiden, SQL Server Compact als Entwicklungsdatenbank beizubehalten, sollten Sie Ihren Standort vor jeder Bereitstellung in der Produktion gründlich in SQL Server oder SQL Server Express in einer Testumgebung testen.

Im Gegensatz zu SQL Server Compact ist SQL Server Express im Wesentlichen die gleiche Datenbank-Engine und verwendet denselben .NET-Anbieter wie vollständige SQL Server. Wenn Sie mit SQL Server Express testen, können Sie sicher sein, dass Sie die gleichen Ergebnisse wie bei SQL Server erhalten. Sie können die meisten der gleichen Datenbanktools mit SQL Server Express verwenden, die Sie mit SQL Server verwenden können (eine wichtige Ausnahme ist SQL Server Profiler), und sie unterstützt andere Features von SQL Server wie gespeicherte Prozeduren, Sichten, Trigger und Replikation. (Sie müssen jedoch in der Regel vollständige SQL Server in einer Produktionswebsite verwenden. SQL Server Express kann in einer freigegebenen Hostingumgebung ausgeführt werden, wurde jedoch nicht dafür entwickelt, und viele Hostinganbieter unterstützen dies nicht.)

Wenn Sie Visual Studio 2012 verwenden, wählen Sie in der Regel SQL Server Express LocalDB für Ihre Entwicklungsumgebung aus, da dies standardmäßig mit Visual Studio installiert wird. LocalDB funktioniert jedoch nicht in IIS, sodass Sie für Ihre Testumgebung entweder SQL Server oder SQL Server Express verwenden müssen.

Kombinieren von Datenbanken im Vergleich zur Trennung

Die Contoso University-Anwendung verfügt über zwei SQL Server Compact Datenbanken: die Mitgliedschaftsdatenbank (aspnet.sdf) und die Anwendungsdatenbank (School.sdf). Bei der Migration können Sie diese Datenbanken zu zwei separaten Datenbanken oder zu einer einzelnen Datenbank migrieren. Sie können sie kombinieren, um Datenbankjoins zwischen Ihrer Anwendungsdatenbank und Ihrer Mitgliedschaftsdatenbank zu vereinfachen. Ihr Hostingplan kann auch einen Grund dafür bieten, sie zu kombinieren. Beispielsweise kann der Hostinganbieter für mehrere Datenbanken mehr in Rechnung stellen oder nicht einmal mehr als eine Datenbank zulassen. Dies gilt für das Cytanium Lite-Hostingkonto, das für dieses Tutorial verwendet wird, das nur eine einzelne SQL Server-Datenbank zulässt.

In diesem Tutorial migrieren Sie Ihre beiden Datenbanken auf diese Weise:

  • Migrieren Sie zu zwei LocalDB-Datenbanken in der Entwicklungsumgebung.
  • Migrieren Sie zu zwei SQL Server Express Datenbanken in der Testumgebung.
  • Migrieren Sie zu einer kombinierten vollständigen SQL Server-Datenbank in der Produktionsumgebung.

Erinnerung: Wenn Sie eine Fehlermeldung erhalten oder etwas nicht funktioniert, während Sie das Tutorial durchlaufen, überprüfen Sie unbedingt die Seite zur Problembehandlung.

Installieren von SQL Server Express

SQL Server Express wird standardmäßig mit Visual Studio 2010 automatisch installiert, aber standardmäßig nicht mit Visual Studio 2012 installiert. Um SQL Server 2012 Express zu installieren, klicken Sie auf den folgenden Link

Wählen Sie ENU/x64/SQLEXPR_x64_ENU.exe oder ENU/x86/SQLEXPR_x86_ENU.exeaus, und übernehmen Sie im Installations-Assistenten die Standardeinstellungen. Weitere Informationen zu Installationsoptionen finden Sie unter Installieren von SQL Server 2012 im Installations-Assistenten (Setup).

Erstellen SQL Server Express Datenbanken für die Testumgebung

Der nächste Schritt besteht darin, die ASP.NET-Mitgliedschafts- und School-Datenbanken zu erstellen.

Wählen Sie im Menü Ansicht die Option Server Explorer (Datenbank Explorer in Visual Web Developer) aus, klicken Sie dann mit der rechten Maustaste auf Daten Connections, und wählen Sie Neue SQL Server Datenbank erstellen aus.

Selecting_Create_New_SQL_Server_Database

Geben Sie im Dialogfeld Neue SQL Server Datenbank erstellen im Feld Servername ".\SQLExpress" und im Feld Neuer Datenbankname "aspnet-Test" ein, und klicken Sie dann auf OK.

Create_New_SQL_Server_Database_aspnet

Führen Sie das gleiche Verfahren aus, um eine neue SQL Server Express School-Datenbank namens "School-Test" zu erstellen.

(Sie fügen "Test" an diese Datenbanknamen an, da Sie später eine zusätzliche instance jeder Datenbank für die Entwicklungsumgebung erstellen und in der Lage sein müssen, die beiden Datenbanken zu unterscheiden.)

Server Explorer zeigt jetzt die beiden neuen Datenbanken an.

New_databases_in_Server_Explorer

Erstellen eines Gewährungsskripts für die neuen Datenbanken

Wenn die Anwendung in IIS auf Ihrem Entwicklungscomputer ausgeführt wird, greift die Anwendung mithilfe der Anmeldeinformationen des Standardanwendungspools auf die Datenbank zu. Standardmäßig verfügt die Anwendungspoolidentität jedoch nicht über die Berechtigung zum Öffnen der Datenbanken. Sie müssen also ein Skript ausführen, um diese Berechtigung zu erteilen. In diesem Abschnitt erstellen Sie das Skript, das Sie später ausführen werden, um sicherzustellen, dass die Anwendung die Datenbanken öffnen kann, wenn sie in IIS ausgeführt wird.

Erstellen Sie im SolutionFiles-Ordner der Lösung, den Sie im Tutorial Bereitstellen in der Produktionsumgebung erstellt haben, eine neue SQL-Datei mit dem Namen Grant.sql. Kopieren Sie die folgenden SQL-Befehle in die Datei, speichern und schließen Sie die Datei:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Hinweis

Dieses Skript ist für die Verwendung mit SQL Server 2008 und den IIS-Einstellungen in Windows 7 konzipiert, wie sie in diesem Tutorial angegeben sind. Wenn Sie eine andere Version von SQL Server oder Windows verwenden oder IIS auf Ihrem Computer anders eingerichtet haben, sind möglicherweise Änderungen an diesem Skript erforderlich. Weitere Informationen zu SQL Server Skripts finden Sie in der SQL Server-Onlinedokumentation.

Hinweis

Sicherheitshinweis Dieses Skript gewährt db_owner Berechtigungen für den Benutzer, der zur Laufzeit auf die Datenbank zugreift, was in der Produktionsumgebung der Fall ist. In einigen Szenarien möchten Sie möglicherweise einen Benutzer angeben, der nur für die Bereitstellung über vollständige Datenbankschemaupdateberechtigungen verfügt, und für die Laufzeit einen anderen Benutzer angeben, der nur über Berechtigungen zum Lesen und Schreiben von Daten verfügt. Weitere Informationen finden Sie unter Überprüfen der automatischen Web.config Änderungen für Code First-Migrationen unter Bereitstellen in IIS als Testumgebung.

Konfigurieren der Datenbankbereitstellung für die Testumgebung

Als Nächstes konfigurieren Sie Visual Studio so, dass die folgenden Aufgaben für jede Datenbank ausgeführt werden:

  • Generieren Sie ein SQL-Skript, das die Struktur der Quelldatenbank (Tabellen, Spalten, Einschränkungen usw.) in der Zieldatenbank erstellt.
  • Generieren Sie ein SQL-Skript, das die Daten der Quelldatenbank in die Tabellen in der Zieldatenbank einfügt.
  • Führen Sie die generierten Skripts und das von Ihnen erstellte Grant-Skript in der Zieldatenbank aus.

Öffnen Sie das Fenster Projekteigenschaften , und wählen Sie die Registerkarte PAKET/SQL veröffentlichen aus.

Stellen Sie sicher, dass aktiv (Release) oder Release in der Dropdownliste Konfiguration ausgewählt ist.

Klicken Sie auf Diese Seite aktivieren.

Package_Publish_SQL_tab_Enable_This_page

Die Registerkarte SQL-Paket/SQL veröffentlichen ist normalerweise deaktiviert, da sie eine Legacybereitstellungsmethode angibt. In den meisten Szenarien sollten Sie die Datenbankbereitstellung im Assistenten zum Veröffentlichen des Webs konfigurieren. Die Migration von SQL Server Compact zu SQL Server oder SQL Server Express ist ein Sonderfall, für den diese Methode eine gute Wahl ist.

Klicken Sie aus Web.configauf Importieren .

Selecting_Import_from_Web.config

Visual Studio sucht in der dateiWeb.config nach Verbindungszeichenfolgen, sucht eine für die Mitgliedschaftsdatenbank und eine für die School-Datenbank und fügt eine Zeile hinzu, die jedem Verbindungszeichenfolge in der Tabelle Datenbankeinträge entspricht. Die gefundenen Verbindungszeichenfolgen gelten für die vorhandenen SQL Server Compact Datenbanken, und Im nächsten Schritt müssen Sie konfigurieren, wie und wo diese Datenbanken bereitgestellt werden.

Sie geben die Datenbankbereitstellungseinstellungen im Abschnitt Datenbankeintragsdetails unter der Tabelle Datenbankeinträge ein . Die im Abschnitt Datenbankeintragsdetails angezeigten Einstellungen beziehen sich wie in der folgenden Abbildung dargestellt auf die ausgewählte Zeile in der Tabelle Datenbankeinträge .

Database_Entry_Details_section_of_Package_Publish_SQL_tab

Konfigurieren der Bereitstellungseinstellungen für die Mitgliedschaftsdatenbank

Wählen Sie in der Tabelle Datenbankeinträge die Zeile DefaultConnection-Deployment aus, um Einstellungen zu konfigurieren, die für die Mitgliedschaftsdatenbank gelten.

Geben Sie unter Verbindungszeichenfolge für Zieldatenbank einen Verbindungszeichenfolge ein, der auf die neue SQL Server Express Mitgliedschaftsdatenbank verweist. Sie können die Verbindungszeichenfolge, die Sie benötigen, über server Explorer abrufen. Erweitern Sie unter Server Explorerden Eintrag Daten Connections, und wählen Sie die AspnetTest-Datenbank aus, und kopieren Sie dann im Fenster Eigenschaften den Wert verbindungszeichenfolge.

aspnet_connection_string_in_Server_Explorer

Die gleiche Verbindungszeichenfolge wird hier reproduziert:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

Kopieren Sie diesen Verbindungszeichenfolge, und fügen Sie ihn auf der Registerkarte SQL-Paket/Veröffentlichen in die Verbindungszeichenfolge für die Zieldatenbank ein.

Stellen Sie sicher, dass Daten und/oder Schema aus einer vorhandenen Datenbank abrufen ausgewählt ist. Dadurch werden SQL-Skripts automatisch generiert und in der Zieldatenbank ausgeführt.

Die Verbindungszeichenfolge für den Quelldatenbankwert wird aus der Web.config-Datei extrahiert und verweist auf die SQL Server Compact-Datenbank. Dies ist die Quelldatenbank, die verwendet wird, um die Skripts zu generieren, die später in der Zieldatenbank ausgeführt werden. Da Sie die Produktionsversion der Datenbank bereitstellen möchten, ändern Sie "aspnet-Dev.sdf" in "aspnet-Prod.sdf".

Ändern Sie datenbankskripting-Optionen von Nur Schema in Schema und Daten, da Sie Ihre Daten (Benutzerkonten und Rollen) sowie die Datenbankstruktur kopieren möchten.

Um die Bereitstellung so zu konfigurieren, dass die zuvor erstellten Gewährungsskripts ausgeführt werden, müssen Sie sie dem Abschnitt Datenbankskripts hinzufügen. Klicken Sie auf Skript hinzufügen, und navigieren Sie im Dialogfeld SQL-Skripts hinzufügen zu dem Ordner, in dem Sie das Genehmigungsskript gespeichert haben (dies ist der Ordner, der Ihre Lösungsdatei enthält). Wählen Sie die Datei mit dem Namen Grant.sql aus, und klicken Sie auf Öffnen.

Select_File_dialog_box_grant_script

Die Einstellungen für die Zeile DefaultConnection-Deployment in Datenbankeinträgen sehen nun wie in der folgenden Abbildung aus:

Database_Entry_Details_for_DefaultConnection_Test

Konfigurieren der Bereitstellungseinstellungen für die Schuldatenbank

Wählen Sie als Nächstes die Zeile SchoolContext-Deployment in der Tabelle Datenbankeinträge aus , um die Bereitstellungseinstellungen für die School-Datenbank zu konfigurieren.

Sie können dieselbe Methode wie zuvor verwenden, um die Verbindungszeichenfolge für die neue SQL Server Express-Datenbank abzurufen. Kopieren Sie diese Verbindungszeichenfolge auf der Registerkarte SQL-Paket/Veröffentlichen in die Verbindungszeichenfolge für die Zieldatenbank.

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

Stellen Sie sicher, dass Daten und/oder Schema aus einer vorhandenen Datenbank abrufen ausgewählt ist.

Die Verbindungszeichenfolge für den Quelldatenbankwert wird aus der Web.config-Datei extrahiert und verweist auf die SQL Server Compact-Datenbank. Ändern Sie "School-Dev.sdf" in "School-Prod.sdf", um die Produktionsversion der Datenbank bereitzustellen. (Sie haben nie eine School-Prod.sdf-Datei im Ordner App_Data erstellt, sodass Sie diese Datei später aus der Testumgebung in den Ordner App_Data im Projektordner ContosoUniversity kopieren.)

Ändern Sie Datenbankskriptoptionen in Schema und Daten.

Sie möchten auch das Skript ausführen, um der Anwendungspoolidentität Lese- und Schreibberechtigungen für diese Datenbank zu erteilen. Fügen Sie daher die Grant.sql Skriptdatei wie für die Mitgliedschaftsdatenbank hinzu.

Wenn Sie fertig sind, sehen die Einstellungen für die Zeile SchoolContext-Deployment in Datenbankeinträgen wie in der folgenden Abbildung aus:

Database_Entry_Details_for_SchoolContext_Test

Speichern Sie die Änderungen auf der Registerkarte SQL packen/veröffentlichen .

Kopieren Sie die Datei School-Prod.sdf aus dem Ordner c:\inetpub\wwwroot\ContosoUniversity\App_Data in den Ordner App_Data im Projekt ContosoUniversity.

Angeben des Transacted-Modus für das Gewährungsskript

Der Bereitstellungsprozess generiert Skripts, die das Datenbankschema und die Daten bereitstellen. Standardmäßig werden diese Skripts in einer Transaktion ausgeführt. Benutzerdefinierte Skripts (wie die Gewährungsskripts) werden jedoch standardmäßig nicht in einer Transaktion ausgeführt. Wenn der Bereitstellungsprozess Transaktionsmodi kombiniert, erhalten Sie möglicherweise einen Timeoutfehler, wenn die Skripts während der Bereitstellung ausgeführt werden. In diesem Abschnitt bearbeiten Sie die Projektdatei, um die benutzerdefinierten Skripts für die Ausführung in einer Transaktion zu konfigurieren.

Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity, und wählen Sie Projekt entladen aus.

Unload_Project_in_Solution_Explorer

Klicken Sie dann erneut mit der rechten Maustaste auf das Projekt, und wählen Sie ContosoUniversity.csproj bearbeiten aus.

Edit_Project_in_Solution_Explorer

Der Visual Studio-Editor zeigt Ihnen den XML-Inhalt der Projektdatei an. Beachten Sie, dass es mehrere PropertyGroup Elemente gibt. (In der Abbildung wurde der Inhalt der PropertyGroup Elemente weggelassen.)

Projektdatei-Editorfenster

Die erste, die über kein Condition Attribut verfügt, gilt für Einstellungen, die unabhängig von der Buildkonfiguration gelten. Ein PropertyGroup Element gilt nur für die Debugbuildkonfiguration (beachten Sie das Condition Attribut), eines gilt nur für die Releasebuildkonfiguration und eines nur für die Testbuildkonfiguration. Innerhalb des PropertyGroup -Elements für die Releasebuildkonfiguration wird ein PublishDatabaseSettings -Element angezeigt, das die Einstellungen enthält, die Sie auf der Registerkarte SQL packen/veröffentlichen eingegeben haben. Es gibt ein Object Element, das jedem der von Ihnen angegebenen Gewährungsskripts entspricht (beachten Sie die beiden Instanzen von "Grant.sql"). Standardmäßig ist Falsedas Transacted Attribut des Source Elements für jedes Gewährungsskript .

Transacted_false

Ändern Sie den Wert des Transacted Attributs des Source Elements in True.

Transacted_true

Speichern und schließen Sie die Projektdatei, klicken Sie dann in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Projekt erneut laden aus.

Reload_project

Einrichten Web.Config Transformationen für die Verbindungszeichenfolgen

Die Verbindungszeichenfolgen für die neuen SQL Express-Datenbanken, die Sie auf der Registerkarte SQL-Paket/SQL veröffentlichen eingegeben haben, werden von Web Deploy nur zum Aktualisieren der Zieldatenbank während der Bereitstellung verwendet. Sie müssen weiterhin Web.config Transformationen einrichten, sodass die Verbindungszeichenfolgen in der bereitgestellten Web.config-Datei auf die neue SQL Server Express-Datenbanken verweisen. (Wenn Sie die Registerkarte Paket/SQL veröffentlichen verwenden, können Sie keine Verbindungszeichenfolgen im Veröffentlichungsprofil konfigurieren.)

Öffnen Sie Web.Test.config , und ersetzen Sie das connectionStrings -Element durch das connectionStrings -Element im folgenden Beispiel. (Stellen Sie sicher, dass Sie nur das connectionStrings-Element kopieren, nicht den umgebenden Code, der hier angezeigt wird, um Kontext bereitzustellen.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Dieser Code bewirkt, dass die connectionString Attribute und providerName jedes add Elements in der bereitgestellten Web.config-Datei ersetzt werden. Diese Verbindungszeichenfolgen sind nicht mit denen identisch, die Sie auf der Registerkarte SQL-Paket/Veröffentlichen eingegeben haben. Ihnen wurde die Einstellung "MultipleActiveResultSets=True" hinzugefügt, da sie für das Entity Framework und die Universelle Anbieter erforderlich ist.

Installieren von SQL Server Compact

Das NuGet-Paket SqlServerCompact stellt die SQL Server Compact Datenbank-Engine-Assemblys für die Contoso University-Anwendung bereit. Jetzt muss jedoch nicht die Anwendung, sondern Web Deploy die SQL Server Compact Datenbanken lesen können, um Skripts für die Ausführung in den SQL Server Datenbanken zu erstellen. Damit Web Deploy SQL Server Compact Datenbanken lesen kann, installieren Sie SQL Server Compact auf dem Entwicklungscomputer über den folgenden Link: Microsoft SQL Server Compact 4.0 SP1.

Bereitstellen in der Testumgebung

Um die Veröffentlichung in der Testumgebung durchzuführen, müssen Sie ein Veröffentlichungsprofil erstellen, das so konfiguriert ist, dass die Registerkarte SQL-Paket/Sql veröffentlichen für die Datenbankveröffentlichung anstelle der Datenbankeinstellungen des Veröffentlichungsprofils verwendet wird.

Löschen Sie zunächst das vorhandene Testprofil.

Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity, und klicken Sie dann auf Veröffentlichen.

Wählen Sie die Registerkarte Profil aus.

Klicken Sie auf Manage Profiles (Profile verwalten).

Wählen Sie Test aus, klicken Sie auf Entfernen, und klicken Sie dann auf Schließen.

Schließen Sie den Assistenten zum Veröffentlichen von Web , um diese Änderung zu speichern.

Erstellen Sie als Nächstes ein neues Testprofil, und verwenden Sie es, um das Projekt zu veröffentlichen.

Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity, und klicken Sie dann auf Veröffentlichen.

Wählen Sie die Registerkarte Profil aus.

Wählen Sie in der Dropdownliste Neu...> aus, und geben Sie "Test" als Profilnamen ein.<

Geben Sie im Feld Dienst-URL den Wert localhost ein.

Geben Sie im Feld Website/Anwendungdie Zeichenfolge Standardwebsite/ContosoUniversity ein.

Geben Sie im Feld Ziel-URL die Zeichenfolge ein http://localhost/ContosoUniversity/.

Klicken Sie auf Weiter.

Auf der Registerkarte Einstellungen werden Sie gewarnt, dass die Registerkarte SQL-Paket/SQL veröffentlichen konfiguriert wurde, und Sie haben die Möglichkeit, sie zu überschreiben, indem Sie auf Neue Datenbankveröffentlichungsverbesserungen aktivieren klicken. Für diese Bereitstellung möchten Sie die Einstellungen der Registerkarte SQL-Datei paketieren/veröffentlichen nicht überschreiben. Klicken Sie daher einfach auf Weiter.

Publish_Web_wizard_Settings_tab_Migrate

Eine Meldung auf der Registerkarte Vorschau gibt an, dass keine Datenbanken für die Veröffentlichung ausgewählt sind. Dies bedeutet jedoch nur, dass die Datenbankveröffentlichung im Veröffentlichungsprofil nicht konfiguriert ist.

Klicken Sie auf Veröffentlichen.

Publish_Web_wizard_Preview_tab_Migrate

Visual Studio stellt die Anwendung bereit und öffnet den Browser auf der Startseite der Website in der Testumgebung. Führen Sie die Seite Dozenten aus, um zu sehen, dass die gleichen Daten angezeigt werden, die Sie zuvor gesehen haben. Führen Sie die Seite Schüler hinzufügen aus, fügen Sie einen neuen Kursteilnehmer hinzu, und zeigen Sie den neuen Kursteilnehmer dann auf der Seite Schüler an . Dadurch wird überprüft, ob Sie die Datenbank aktualisieren können. Wählen Sie die Seite Guthaben aktualisieren aus (Sie müssen sich anmelden), um zu überprüfen, ob die Mitgliedschaftsdatenbank bereitgestellt wurde und Sie Zugriff darauf haben.

Erstellen einer SQL Server-Datenbank für die Produktionsumgebung

Nachdem Sie nun in der Testumgebung bereitgestellt haben, können Sie die Bereitstellung in der Produktion einrichten. Sie beginnen wie für die Testumgebung, indem Sie eine Datenbank erstellen, in der die Bereitstellung erfolgen soll. Wie Sie sich aus der Übersicht erinnern, lässt der Cytanium Lite-Hostingplan nur eine einzelne SQL Server-Datenbank zu, sodass Sie nur eine Datenbank einrichten, nicht zwei. Alle Tabellen und Daten aus den Datenbanken "Mitgliedschaft" und "School SQL Server Compact" werden in einer SQL Server Datenbank in der Produktion bereitgestellt.

Wechseln Sie zur Cytanium-Systemsteuerung unter http://panel.cytanium.com. Halten Sie die Maus über Datenbanken, und klicken Sie dann auf SQL Server 2008.

Selecting_Databases_in_Control_Panel

Klicken Sie auf der Seite SQL Server 2008 auf Datenbank erstellen.

Selecting_Create_Database

Geben Sie der Datenbank den Namen "School", und klicken Sie auf Speichern. (Die Seite fügt automatisch das Präfix "contosou" hinzu, sodass der effektive Name "contosouSchool" lautet.)

Naming_the_database

Klicken Sie auf derselben Seite auf Benutzer erstellen. Anstatt die integrierte Windows-Sicherheit zu verwenden und die Anwendungspoolidentität Ihre Datenbank öffnen zu lassen, erstellen Sie auf den Servern von Cytanium einen Benutzer, der über die Berechtigung zum Öffnen Ihrer Datenbank verfügt. Sie fügen die Anmeldeinformationen des Benutzers den Verbindungszeichenfolgen hinzu, die in die Produktionsdatei Web.config . In diesem Schritt erstellen Sie diese Anmeldeinformationen.

Creating_a_database_user

Füllen Sie die erforderlichen Felder auf der Seite SQL-Benutzereigenschaften aus :

  • Geben Sie "ContosoUniversityUser" als Namen ein.
  • Geben Sie ein Kennwort ein.
  • Wählen Sie contosouSchool als Standarddatenbank aus.
  • Aktivieren Sie das Kontrollkästchen contosouSchool .

SQL_User_Properties_page

Konfigurieren der Datenbankbereitstellung für die Produktionsumgebung

Jetzt können Sie die Datenbankbereitstellungseinstellungen auf der Registerkarte SQL-Paket/Veröffentlichen einrichten, wie sie es zuvor für die Testumgebung getan haben.

Öffnen Sie das Fenster Projekteigenschaften , wählen Sie die Registerkarte Paket/SQL veröffentlichen aus, und stellen Sie sicher, dass Aktiv (Release) oder Release in der Dropdownliste Konfiguration ausgewählt ist.

Wenn Sie Bereitstellungseinstellungen für jede Datenbank konfigurieren, besteht der Hauptunterschied zwischen den Vorgängen für Produktions- und Testumgebungen in der Konfiguration von Verbindungszeichenfolgen. Für die Testumgebung haben Sie unterschiedliche Zieldatenbankverbindungszeichenfolgen eingegeben, aber für die Produktionsumgebung ist das Ziel Verbindungszeichenfolge für beide Datenbanken identisch. Dies liegt daran, dass Sie beide Datenbanken in einer Datenbank in der Produktion bereitstellen.

Konfigurieren der Bereitstellungseinstellungen für die Mitgliedschaftsdatenbank

Um Einstellungen zu konfigurieren, die für die Mitgliedschaftsdatenbank gelten, wählen Sie in der Tabelle Datenbankeinträge die Zeile DefaultConnection-Deployment aus.

Geben Sie unter Verbindungszeichenfolge für Zieldatenbank einen Verbindungszeichenfolge ein, der auf die neue Produktionsdatenbank SQL Server zeigt, die Sie soeben erstellt haben. Sie können die Verbindungszeichenfolge aus Ihrer Willkommens-E-Mail abrufen. Der relevante Teil der E-Mail enthält die folgenden Beispiel-Verbindungszeichenfolge:

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

Nachdem Sie die drei Variablen ersetzt haben, sieht die Verbindungszeichenfolge, die Sie benötigen, wie in diesem Beispiel aus:

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

Kopieren Sie diese Verbindungszeichenfolge, und fügen Sie sie auf der Registerkarte SQL-Paket/Veröffentlichen in die Verbindungszeichenfolge für die Zieldatenbank ein.

Stellen Sie sicher, dass Daten und/oder Schema aus einer vorhandenen Datenbank abrufen weiterhin ausgewählt ist und dass die Optionen für Datenbankskripterstellung weiterhin Schema und Daten sind.

Deaktivieren Sie im Feld Datenbankskripts das Kontrollkästchen neben dem skript Grant.sql.

Disable_Grant_script

Konfigurieren der Bereitstellungseinstellungen für die Schuldatenbank

Wählen Sie als Nächstes die Zeile SchoolContext-Deployment in der Tabelle Datenbankeinträge aus , um die Einstellungen für die School-Datenbank zu konfigurieren.

Kopieren Sie dieselbe Verbindungszeichenfolge in die Verbindungszeichenfolge für die Zieldatenbank, die Sie in dieses Feld für die Mitgliedschaftsdatenbank kopiert haben.

Stellen Sie sicher, dass Daten und/oder Schema aus einer vorhandenen Datenbank abrufen weiterhin ausgewählt ist und dass die Optionen für Datenbankskripterstellung weiterhin Schema und Daten sind.

Deaktivieren Sie im Feld Datenbankskripts das Kontrollkästchen neben dem skript Grant.sql.

Speichern Sie die Änderungen auf der Registerkarte SQL-Paket/Veröffentlichen .

Einrichten Web.Config Transformationen für die Verbindungszeichenfolgen zu Produktionsdatenbanken

Als Nächstes richten Sie Web.config Transformationen so ein, dass die Verbindungszeichenfolgen in der bereitgestellten Web.config Datei auf die neue Produktionsdatenbank verweisen. Die Verbindungszeichenfolge, die Sie auf der Registerkarte SQL-Paket/Veröffentlichen für web Deploy für die Verwendung eingegeben haben, ist mit ausnahme des Hinzufügens der Option identisch mit dem, den die MultipleResultSets Anwendung verwenden muss.

Öffnen Sie Web.Production.config , und ersetzen Sie das connectionStrings Element durch ein connectionStrings Element, das wie im folgenden Beispiel aussieht. (Kopieren Sie nur das connectionStrings Element, nicht die umgebenden Tags, die bereitgestellt werden, um den Kontext anzuzeigen.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Manchmal werden Ratschläge angezeigt, die Ihnen raten, Verbindungszeichenfolgen in der Web.config-Datei immer zu verschlüsseln. Dies kann geeignet sein, wenn Sie die Bereitstellung auf Servern im Netzwerk Ihres eigenen Unternehmens durchführen. Wenn Sie jedoch die Bereitstellung in einer freigegebenen Hostingumgebung durchführen, vertrauen Sie den Sicherheitspraktiken des Hostinganbieters, und es ist nicht notwendig oder praktisch, die Verbindungszeichenfolgen zu verschlüsseln.

Bereitstellen in der Produktionsumgebung

Jetzt können Sie die Bereitstellung in der Produktion durchführen. Web Deploy liest die SQL Server Compact Datenbanken im App_Data Ordner Ihres Projekts und erstellt alle Tabellen und Daten in der Produktionsdatenbank SQL Server erneut. Um die Veröffentlichung mithilfe der Einstellungen der Registerkarte Paket/Web veröffentlichen zu können, müssen Sie ein neues Veröffentlichungsprofil für die Produktion erstellen.

Löschen Sie zunächst das vorhandene Produktionsprofil wie zuvor das Testprofil.

Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity, und klicken Sie dann auf Veröffentlichen.

Wählen Sie die Registerkarte Profil aus.

Klicken Sie auf Manage Profiles (Profile verwalten).

Wählen Sie Produktion aus, klicken Sie auf Entfernen, und klicken Sie dann auf Schließen.

Schließen Sie den Assistenten zum Veröffentlichen von Web , um diese Änderung zu speichern.

Erstellen Sie als Nächstes ein neues Produktionsprofil, und verwenden Sie es zum Veröffentlichen des Projekts.

Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ContosoUniversity, und klicken Sie dann auf Veröffentlichen.

Wählen Sie die Registerkarte Profil aus.

Klicken Sie auf Importieren, und wählen Sie die datei .publishsettings aus, die Sie zuvor heruntergeladen haben.

Ändern Sie auf der Registerkarte Verbindung die Ziel-URL in die richtige temporäre URL, die in diesem Beispiel lautet http://contosouniversity.com.vserver01.cytanium.com.

Benennen Sie das Profil in Produktion um. (Wählen Sie die Registerkarte Profil aus, und klicken Sie dazu auf Profile verwalten ).

Schließen Sie den Assistenten zum Veröffentlichen von Web , um Ihre Änderungen zu speichern.

In einer echten Anwendung, in der die Datenbank in der Produktion aktualisiert wurde, führen Sie jetzt zwei zusätzliche Schritte aus, bevor Sie veröffentlichen:

  1. Laden Sie app_offline.htmhoch, wie im Tutorial Bereitstellen in der Produktionsumgebung gezeigt.
  2. Verwenden Sie die Datei-Manager-Funktion des Cytanium-Systemsteuerungs, um die Dateien aspnet-Prod.sdf und School-Prod.sdf von der Produktionswebsite in den ordner App_Data des ContosoUniversity-Projekts zu kopieren. Dadurch wird sichergestellt, dass die Daten, die Sie in der neuen SQL Server-Datenbank bereitstellen, die neuesten Updates ihrer Produktionswebsite enthalten.

Stellen Sie auf der Symbolleiste Web One Click Publish (Web One Click Publish) sicher, dass das Produktionsprofil ausgewählt ist, und klicken Sie dann auf Veröffentlichen.

Wenn Sie vor der Veröffentlichungapp_offline.htm hochgeladen haben, müssen Sie das Datei-Manager-Hilfsprogramm im Cytanium-Systemsteuerung verwenden, um app_offline zu löschen .htm vor dem Testen. Sie können auch gleichzeitig die SDF-Dateien aus dem Ordner App_Data löschen.

Sie können jetzt einen Browser öffnen und zur URL Ihrer öffentlichen Website wechseln, um die Anwendung auf die gleiche Weise wie nach der Bereitstellung in der Testumgebung zu testen.

Wechseln zu SQL Server Express LocalDB in der Entwicklung

Wie in der Übersicht erläutert, ist es im Allgemeinen am besten, bei der Entwicklung die gleiche Datenbank-Engine zu verwenden, die Sie in Test und Produktion verwenden. (Denken Sie daran, dass der Vorteil der Verwendung SQL Server Express in der Entwicklung darin besteht, dass die Datenbank in Ihren Entwicklungs-, Test- und Produktionsumgebungen gleich funktioniert.) In diesem Abschnitt richten Sie das ContosoUniversity-Projekt so ein, dass SQL Server Express LocalDB verwendet wird, wenn Sie die Anwendung in Visual Studio ausführen.

Die einfachste Möglichkeit, diese Migration durchzuführen, besteht darin, code first und das Mitgliedschaftssystem beide neuen Entwicklungsdatenbanken für Sie erstellen zu lassen. Für die Migration dieser Methode sind drei Schritte erforderlich:

  1. Ändern Sie die Verbindungszeichenfolgen, um neue SQL Express LocalDB-Datenbanken anzugeben.
  2. Führen Sie das Websiteverwaltungstool aus, um einen Administratorbenutzer zu erstellen. Dadurch wird die Mitgliedschaftsdatenbank erstellt.
  3. Verwenden Sie den befehl Code First-Migrationen update-database, um die Anwendungsdatenbank zu erstellen und zu seeden.

Aktualisieren von Verbindungszeichenfolgen in der Web.config-Datei

Öffnen Sie die Web.config-Datei , und ersetzen Sie das connectionStrings Element durch den folgenden Code:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

Erstellen der Mitgliedschaftsdatenbank

Wählen Sie in Projektmappen-Explorer das Projekt ContosoUniversity aus, und klicken Sie dann im Menü Projekt auf ASP.NET Konfiguration.

Wählen Sie die Registerkarte Sicherheit aus.

Klicken Sie auf Rollen erstellen oder verwalten, und erstellen Sie dann eine Administratorrolle .

Kehren Sie zur Registerkarte Sicherheit zurück.

Klicken Sie auf Benutzer erstellen, aktivieren Sie dann das Kontrollkästchen Administrator , und erstellen Sie einen Benutzer mit dem Namen Administrator.

Schließen Sie das Websiteverwaltungstool.

Erstellen der Schuldatenbank

Öffnen Sie das Fenster Paket-Manager-Konsole.

Wählen Sie in der Dropdownliste Standardprojekt das Projekt ContosoUniversity.DAL aus.

Geben Sie den folgenden Befehl ein:

update-database

Code First-Migrationen wendet die Anfängliche Migration an, die die Datenbank erstellt und dann die AddBirthDate-Migration anwendet, und führt dann die Seed-Methode aus.

Führen Sie die Website aus, indem Sie STRG-F5 drücken. Führen Sie wie für die Test- und Produktionsumgebungen die Seite Schüler hinzufügen aus, fügen Sie einen neuen Kursteilnehmer hinzu, und zeigen Sie den neuen Kursteilnehmer dann auf der Seite Studenten an. Dadurch wird überprüft, ob die School-Datenbank erstellt und initialisiert wurde und Sie Lese- und Schreibzugriff darauf haben.

Wählen Sie die Seite Guthaben aktualisieren aus, und melden Sie sich an, um zu überprüfen, ob die Mitgliedschaftsdatenbank bereitgestellt wurde und Sie Zugriff darauf haben. Wenn Sie Ihre Benutzerkonten nicht migriert haben, erstellen Sie ein Administratorkonto, und wählen Sie dann die Seite Guthaben aktualisieren aus, um zu überprüfen, ob es funktioniert.

Bereinigen SQL Server Compact Dateien

Sie benötigen keine Dateien und NuGet-Pakete mehr, die enthalten waren, um SQL Server Compact zu unterstützen. Wenn Sie möchten (dieser Schritt ist nicht erforderlich), können Sie nicht benötigte Dateien und Verweise sauber.

Löschen Sie in Projektmappen-Explorer die SDF-Dateien aus dem Ordner App_Data und die Ordner amd64 und x86 aus dem Ordner bin.

Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe (nicht eines der Projekte), und klicken Sie dann auf NuGet-Pakete für Projektmappe verwalten.

Wählen Sie im linken Bereich des Dialogfelds NuGet-Pakete verwaltendie Option Installierte Pakete aus.

Wählen Sie das Paket EntityFramework.SqlServerCompact aus, und klicken Sie auf Verwalten.

Im Dialogfeld Projekte auswählen sind beide Projekte ausgewählt. Um das Paket in beiden Projekten zu deinstallieren, deaktivieren Sie beide Kontrollkästchen, und klicken Sie dann auf OK.

Klicken Sie im Dialogfeld, in dem Sie gefragt werden, ob Sie auch die abhängigen Pakete deinstallieren möchten, auf Nein. Eines davon ist das Entity Framework-Paket, das Sie behalten müssen.

Führen Sie dasselbe Verfahren aus, um das SqlServerCompact-Paket zu deinstallieren. (Die Pakete müssen in dieser Reihenfolge deinstalliert werden, da das EntityFramework.SqlServerCompact-Paket vom SqlServerCompact-Paket abhängt.)

Sie haben nun erfolgreich zu SQL Server Express und vollständigen SQL Server migriert. Im nächsten Tutorial nehmen Sie eine weitere Datenbankänderung vor, und Sie erfahren, wie Sie Datenbankänderungen bereitstellen, wenn Ihre Test- und Produktionsdatenbanken SQL Server Express und vollständige SQL Server verwenden.