Bereitstellen von Datenbankrollenmitgliedschaften in Unternehmensumgebungen
von Jason Lee
Hinweis
Seit diesem Artikel wurden die ASP.NET-Mitgliedschaftsanbieter von ASP.NET Identity abgelöst. Es wird dringend empfohlen, Apps so zu aktualisieren, dass sie die ASP.NET Identity-Plattform anstelle der Mitgliedschaftsanbieter verwenden, die zum Zeitpunkt des Schreibens dieses Artikels vorgestellt wurden. ASP.NET Identity bietet eine Reihe von Vorteilen gegenüber dem ASP.NET Mitgliedschaftssystem, darunter:
- Bessere Leistung
- Verbesserte Erweiterbarkeit und Testbarkeit
- Unterstützung für OAuth, OpenID Connect und zweistufige Authentifizierung
- Unterstützung der anspruchsbasierten Identität
- Bessere Interoperabilität mit ASP.Net Core
In diesem Thema werden die wichtigsten Überlegungen und Herausforderungen erläutert, die Sie bewältigen müssen, wenn Sie ASP.NET Anwendungsdienstdatenbanken (häufiger als Mitgliedschaftsdatenbanken bezeichnet) in Test-, Staging- oder Produktionsumgebungen bereitstellen. Außerdem werden Ansätze beschrieben, die Sie verwenden können, um diese Herausforderungen zu bewältigen.
Dieses Thema ist Teil einer Reihe von Tutorials, die sich auf die Unternehmensbereitstellungsanforderungen eines fiktiven Unternehmens namens Fabrikam, Inc. beziehen. In dieser Tutorialreihe wird eine Beispiellösung – die Contact Manager-Lösung – verwendet, um eine Webanwendung mit einem realistischen Maß an Komplexität darzustellen, einschließlich einer ASP.NET MVC 3-Anwendung, einem WCF-Dienst (Windows Communication Foundation) und einem Datenbankprojekt.
Die Bereitstellungsmethode im Mittelpunkt dieser Tutorials basiert auf dem unter Grundlegendes zur Projektdatei beschriebenen Ansatz für geteilte Projektdateien, bei dem der Buildprozess von zwei Projektdateien gesteuert wird– eine mit Buildanweisungen, die für jede Zielumgebung gelten, und eine mit umgebungsspezifischen Build- und Bereitstellungseinstellungen. Zur Buildzeit wird die umgebungsspezifische Projektdatei in die umgebungsunabhängige Projektdatei zusammengeführt, um einen vollständigen Satz von Buildanweisungen zu bilden.
Welche Probleme gibt es beim Bereitstellen einer Mitgliedschaftsdatenbank?
Wenn Sie eine Bereitstellungsstrategie für eine Datenbank entwickeln, müssen Sie in den meisten Fällen zuerst berücksichtigen, welche Daten Sie bereitstellen möchten. In einer Entwicklungs- oder Testumgebung sollten Sie Benutzerkontodaten bereitstellen, um schnelle und einfache Tests zu ermöglichen. In einer Staging- oder Produktionsumgebung ist es sehr unwahrscheinlich, dass Sie Benutzerkontodaten bereitstellen möchten.
Leider bringen ASP.NET Mitgliedschaftsdatenbanken einige spezifische Herausforderungen mit sich, die diese Entscheidung viel komplexer machen:
- Bei einer reinen Schemabereitstellung befindet sich die Mitgliedschaftsdatenbank in einem nicht betriebsfähigen Zustand. Dies liegt daran, dass die Mitgliedschaftsdatenbank einige Konfigurationsdaten (in der aspnet_SchemaVersions Tabelle) enthält, die die Datenbank benötigt, um zu funktionieren. Wenn Sie also eine schemabasierte Bereitstellung Ihrer Mitgliedschaftsdatenbank durchführen, um Benutzerkontodaten auszuschließen, müssen Sie ein Skript nach der Bereitstellung ausführen, um die wesentlichen Konfigurationsdaten hinzuzufügen.
- Je nachdem, wie Ihre Mitgliedschaftsdatenbank konfiguriert ist, kann der Mitgliedschaftsanbieter den Computerschlüssel verwenden, um Kennwörter zu verschlüsseln und in der Datenbank zu speichern. In diesem Fall können alle Benutzerkontodaten, die Sie mit der Datenbank bereitstellen, auf dem Zielserver nicht mehr verwendet werden. Aus diesem Grund wird die Bereitstellung von Benutzerkontodaten nicht unterstützt.
Auswählen einer Mitgliedschaftsdatenbankstrategie
Verwenden Sie die folgenden Richtlinien, wenn Sie auswählen, wie Eine Mitgliedschaftsdatenbank in einer Unternehmensserverumgebung bereitgestellt werden soll:
- Stellen Sie nach Möglichkeit keine Mitgliedschaftsdatenbanken bereit. Erstellen Sie stattdessen die Mitgliedschaftsdatenbank manuell auf dem Zieldatenbankserver. Wenn Sie Ihr Mitgliedschaftsdatenbankschema nicht angepasst haben, können Sie einfach ein neues In-Situ-Schema am Ziel erstellen, indem Sie das ASP.NET SQL Server Registrierungstool (aspnet_regsql.exe) verwenden.
- Wenn Sie keine andere Möglichkeit haben, als eine Mitgliedschaftsdatenbank bereitzustellen – z. B. wenn Sie umfangreiche Änderungen am Datenbankschema vorgenommen haben –, sollten Sie eine reine Schemabereitstellung der Mitgliedschaftsdatenbank durchführen, Um Benutzerkontodaten auszuschließen, und dann ein Skript nach der Bereitstellung ausführen, um alle erforderlichen Konfigurationsdaten hinzuzufügen. Ausführliche Anleitungen zu diesen Ansätzen finden Sie unter How to: Deploy the ASP.NET Membership Database Without Including User Accounts (Vorgehensweise: Bereitstellen der ASP.NET-Mitgliedschaftsdatenbank ohne Einbeziehung von Benutzerkonten).
Beachten Sie, dass das Schema Ihrer Mitgliedschaftsdatenbank wahrscheinlich ziemlich statisch ist. Selbst wenn Sie die Mitgliedschaftsdatenbank angepasst haben, ist es unwahrscheinlich, dass Sie das Schema regelmäßig aktualisieren müssen– es wird sich nicht mit der gleichen Häufigkeit wie der Code in einer Webanwendung oder einem Datenbankprojekt ändern. Daher sollten Sie die Mitgliedschaftsdatenbank nicht in automatisierte oder einstufige Bereitstellungsprozesse einbeziehen müssen.
Verwenden von VSDBCMD zum Aktualisieren eines Mitgliedschaftsdatenbankschemas
Wenn Sie die Struktur Ihrer Mitgliedschaftsdatenbank nach der ersten Bereitstellung ändern, möchten Sie möglicherweise nicht das Webbereitstellungstool für Internetinformationsdienste (IIS) (Web Deploy) verwenden, um die Datenbank erneut bereitzustellen. Die Datenbankbereitstellungsfunktion in Web Deploy enthält nicht die Möglichkeit, differenzielle Updates für eine Zieldatenbank vorzunehmen. Stattdessen muss Web Deploy die Datenbank löschen und neu erstellen. Dies bedeutet, dass Sie vorhandene Benutzerkontodaten verlieren, was in Staging- oder Produktionsumgebungen in der Regel unerwünscht ist.
Alternativ können Sie das VSDBCMD-Hilfsprogramm verwenden, um das Schema Ihrer Zieldatenbank zu aktualisieren. VSDBCMD umfasst zwei wichtige Funktionen. Zunächst kann das Schema einer vorhandenen Datenbank in eine DBSCHEMA-Datei importiert werden. Zweitens kann eine DBSCHEMA-Datei in einer vorhandenen Datenbank als differenzielles Update bereitgestellt werden, was bedeutet, dass nur die Änderungen vorgenommen werden, die erforderlich sind, um die Zieldatenbank auf den neuesten Stand zu bringen, und Sie verlieren keine Daten.
Sie können die folgenden allgemeinen Schritte verwenden, um ein Mitgliedschaftsdatenbankschema zu aktualisieren:
- Verwenden Sie die VSDBCMD-Importaktion , um eine DBSCHEMA-Datei für Ihre Quellmitgliedschaftsdatenbank zu generieren. Dieses Verfahren wird unter Vorgehensweise: Importieren eines Schemas aus einer Eingabeaufforderung beschrieben.
- Verwenden Sie die VSDBCMD Deploy-Aktion , um die DBSCHEMA-Datei in Ihrer Zielmitgliedschaftsdatenbank bereitzustellen. Dieses Verfahren wird unter Befehlszeilenreferenz für VSDBCMD.EXE (Bereitstellung und Schemaimport) beschrieben.
Schlussbemerkung
In diesem Thema wurden einige der Herausforderungen beschrieben, mit denen Sie möglicherweise konfrontiert sind, wenn Sie ASP.NET Mitgliedschaftsdatenbanken in verschiedenen Zielumgebungen bereitstellen müssen. Insbesondere wurde erläutert, warum reine Schemabereitstellungen die Mitgliedschaftsdatenbank in einem nicht betriebsfähigen Zustand belassen und warum die Bereitstellung von Benutzerkontodaten nicht unterstützt wird. Das Thema enthält auch Anleitungen zum Bereitstellen, Bereitstellen und Aktualisieren von Mitgliedschaftsdatenbanken in verschiedenen Szenarien.
Weitere Informationen
Weitere Anleitungen und Beispiele für die Verwendung von VSDBCMD finden Sie unter Befehlszeilenreferenz für VSDBCMD.EXE (Bereitstellung und Schemaimport) und Gewusst wie: Importieren eines Schemas aus einer Eingabeaufforderung. Weitere Informationen zur Verwendung von aspnet_regsql.exe zum Erstellen von Mitgliedschaftsdatenbanken finden Sie unter ASP.NET SQL Server Registrierungstool (aspnet_regsql.exe). Weitere allgemeine Anleitungen zum Bereitstellen von Mitgliedschaftsdatenbanken finden Sie unter Vorgehensweise: Bereitstellen der ASP.NET Mitgliedschaftsdatenbank ohne Einbeziehung von Benutzerkonten.