Verwenden von SQL Server Express Edition mit ASP.NET

Aktualisiert: November 2007

Microsoft SQL Server 2005 Express Edition stellt eine einfache Datenbankprojektmappe zum Erstellen von Anwendungen bereit. SQL Server Express Edition unterstützt das gesamte Programmiermodell für SQL Server 2005, z. B. Transact-SQL, gespeicherte Prozeduren, Sichten, Trigger, SQL Server CLR (SQLCLR)-Integration und den Datentyp XML. Wenn Sie eine Anwendung mit SQL Server Express Edition als Datenquelle entwickeln, können Sie sicherstellen, dass die Anwendung mit Produktionsservern kompatibel ist, auf denen SQL Server 2005 ausgeführt wird.

Herstellen einer Verbindung mit einer SQL Server Express Edition-Datenbank

Sie können eine Verbindung mit einer SQL Server Express Edition-Datenbank wie mit jeder anderen SQL Server-Datenbank herstellen, indem Sie den Datenbankserver als lokale SQL Server Express Edition-Datenbank angeben. Beispielsweise wird mit der folgenden Verbindungszeichenfolge eine Verbindung mit der Datenbank Customers hergestellt.

Data Source=.\SQLEXPRESS;Initial Catalog=Customers;Integrated Security=True;

Wenn Sie anstelle des InitialCatalog-Verbindungszeichenfolgenattributs oder des Database-Verbindungszeichenfolgenattributs das AttachDBFilename-Verbindungszeichenfolgenattribut verwenden, können Sie zudem eine Datenbankdatei für die herzustellende Verbindung angeben. Wenn Sie eine Verbindung mit einer Datenbank unter Verwendung eines Dateinamens herstellen, wird das Bereitstellen der Datenbank mit der Anwendung vereinfacht (sofern auf dem Zielserver SQL Server Express Edition ausgeführt wird). Beispielsweise wird mit der folgenden Verbindungszeichenfolge eine Verbindung mit einer Datenbank hergestellt, die in der Datei Customers.mdf gespeichert ist.

Data Source=.\SQLEXPRESS;AttachDbFileName=e:\data\Customers.mdf;Integrated Security=True;User Instance=True

ASP.NET bietet eine komfortable Möglichkeit zum Speichern von Daten im Verzeichnis App_Data einer Webanwendung. Der Inhalt des Verzeichnisses App_Data wird nicht für Webanforderungen bereitgestellt. Hierdurch wird die Sicherheit der Daten für die Anwendung erhöht. Ein weiterer Vorteil ist, dass Sie statt des Pfads des Verzeichnisses App_Data für die Anwendung die |DataDirectory|-Verbindungszeichenfolgenvariable angeben können. ASP.NET-Features, z. B. das SqlDataSource-Steuerelement oder die Anbieter für Mitgliedschaft, Rollen, Benutzerprofile, Webparts-Personalisierung usw., ersetzen beim Öffnen einer Verbindung mit der Datenbank automatisch die |DataDirectory|-Verbindungszeichenfolgenvariable durch den Dateipfad des Verzeichnisses App_Data. Hierdurch wird sichergestellt, dass der Pfad der Datenbank aktuell bleibt, wenn die Webanwendung in ein anderes Verzeichnis verschoben wird. Im folgenden Codebeispiel wird eine Verbindungszeichenfolge veranschaulicht, die die |DataDirectory|-Verbindungszeichenfolgenvariable enthält.

Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Customers.mdf;Integrated Security=True;User Instance=True
Hinweis:

SQL Server Express Edition lässt nur eine einzige Verbindung mit einer MDF-Datei zu, wenn Sie eine Verbindung mit einer Verbindungszeichenfolge herstellen, für die User Instance auf true festgelegt ist.

Sie können die Verbindung mit Visual Web Developer schließen, indem Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datenbank klicken und die die Option Trennen auswählen. Oder Sie klicken im Server-Explorer mit der rechten Maustaste auf die Datenbank und wählen Verbindung trennen aus. Visual Web Developer schließt automatisch alle offenen Datenbankverbindungen, wenn Sie eine Webanwendung ausführen oder debuggen.

Wenn Sie offene Verbindungen mit einer SQL Server Express Edition-Datenbank freigeben müssen, können Sie außerdem die Webanwendung mithilfe des IIS (Internet Information Services)-Managers entladen. Sie können Webanwendungen auch entladen, indem Sie dem Stammverzeichnis der Webanwendung eine HTML-Datei mit dem Namen App_offline.htm hinzufügen. Damit die Webanwendung wieder auf Webanforderungen antwortet, entfernen Sie einfach die Datei App_offline.htm. Sie müssen offene Verbindungen mit einer SQL Server Express Edition-Datenbank freigeben, wenn Sie die Datenbank an einen neuen Speicherort kopieren oder verschieben möchten.

Einrichten einer SQL Server Express Edition-Datenbank

Visual Web Developer stellt Tools zum Erstellen einer SQL Server Express Edition-Datenbank, zum Verwalten von Datenbankelementen, z. B. Tabellen, gespeicherte Prozeduren usw., sowie zum Verwalten von Verbindungen mit der Datenbank bereit. Sie können auf diese Funktionen über das Fenster Server-Explorer zugreifen. Anweisungen zum Erstellen einer SQL Server Express Edition-Datenbank finden Sie unter Gewusst wie: Erstellen von SQL Server Express Edition -Datenbanken.

Sie können auch eine SQL Server Express Edition-Datenbank erstellen, indem Sie eine Verbindung mit einem Computer herstellen, auf dem SQL Server Express Edition ausgeführt wird, und den Befehl CREATE DATABASE ausgeben. Sie können die Datenbank außerdem mit den für SQL Server Express Edition bereitgestellten SQL Server-Verwaltungstools erstellen.

Der Standardanbieter für ASP.NET-Features, die Daten in einer SQL Server-Datenbank speichern, z. B. Mitgliedschaft, Rollen, Benutzerprofile, Webparts-Personalisierung usw., ist zum Herstellen einer Verbindung mit der SQL Server Express Edition-Datenbank Aspnetdb.mdf im Verzeichnis App_Data der Anwendung konfiguriert. Wenn Sie eines dieser Datenspeicherungsfeatures mithilfe des Standardanbieters aktivieren und die SQL Server Express Edition-Datenbank Aspnetdb.mdf im Verzeichnis App_Data der Anwendung nicht vorhanden ist, wird die Datenbank automatisch erstellt. Auch das Verzeichnis App_Data für die Anwendung wird erstellt, wenn es nicht vorhanden ist.

Benutzerinstanzen

SQL Server Express Edition unterstützt Benutzerinstanzen. Dies bedeutet, dass für jeden Benutzer, der eine Verbindung mit einer SQL Server Express Edition-Datenbank herstellt, ein neuer Prozess gestartet wird. Die Identität des Prozesses ist der Benutzer, der die Verbindung geöffnet hat. Informationen über das Bestimmen der Identität einer ASP.NET-Anwendung finden Sie unter Identitätswechsel in ASP.NET.

Wenn Sie eine Verbindung mit einem lokalen Datenbankprojekt herstellen, stellt Visual Web Developer standardmäßig die Verbindung mit der SQL Server Express Edition-Datenbank mit aktivierten Benutzerinstanzen her. Im folgenden Codebeispiel wird eine typische Verbindungszeichenfolge veranschaulicht, die von Visual Web Developer zum Herstellen einer Verbindung mit einer SQL Server Express Edition-Datenbank verwendet wird.

Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Database.mdf;Integrated Security=True;User Instance=True

Das Aktivieren von Benutzerinstanzen ist zwar für die Desktopentwicklung geeignet, doch sollten Workerprozesse nicht auf Webservern gestartet werden, die Sites für mehrere Kunden hosten, wobei Anwendungen getrennt und geschützt werden müssen. ASP.NET-Anwendungen, die mit der gleichen Prozessidentität ausgeführt werden, können eine Verbindung mit der gleichen Benutzerinstanz herstellen. Alle ASP.NET-Anwendungen unter Windows 2000 und Windows XP Professional werden mit derselben Prozessidentität (standardmäßig das lokale Konto ASPNET) ausgeführt, und ASP.NET-Anwendungen in demselben Anwendungspool unter Windows Server 2003 werden mit derselben Prozessidentität (standardmäßig das Konto NETZWERKDIENST) ausgeführt. Daher sollten gemeinsame Hostserver, die Anwendungen enthalten, zwischen denen kein Vertrauensverhältnis besteht, Benutzerinstanzen explizit deaktivieren. Diese Funktionalität kann deaktiviert werden, indem eine Verbindung mit der SQL Server Express Edition-Instanz hergestellt wird (z. B. durch Eingabe des folgenden Befehls an der Eingabeaufforderung: osql –E –S .\SQLEXPRESS) und der folgende Transact-SQL-Befehl eingegeben wird.

EXEC sp_configure 'show advanced option', '1'

GO

RECONFIGURE WITH OVERRIDE

GO

EXEC sp_configure 'user instances enabled', 0

GO

RECONFIGURE WITH OVERRIDE

GO

Bereitstellen einer SQL Server Express Edition-Datenbank

Eine SQL Server Express Edition-Datenbank besteht aus zwei Dateien: der MDF-Datei, die das Datenbankschema und die Daten enthält, und der LDF-Datei, die Protokollinformationen für die Datenbank enthält. Wenn Sie eine Website mithilfe des Tools zum Kopieren von Websites bereitstellen, werden auch die SQL Server Express Edition-Datenbankdateien kopiert. Die Anwendung wird ausgeführt, solange SQL Server Express Edition auf dem Zielserver installiert ist. Weitere Informationen hierzu finden Sie unter Gewusst wie: Kopieren von Websitedateien mit dem Dienstprogramm "Website kopieren".

Im Folgenden werden einige weitere Optionen zum Bereitstellen einer SQL Server Express Edition-Datenbank beschrieben.

  • Wenn Sie eine dateibasierte Verbindung mit der SQL Server Express Edition-Datenbank herstellen, können diese Dateien unter Verwendung von XCopy, FTP oder auf andere Weise mit der Anwendung auf einen Zielserver (auf dem SQL Server Express Edition installiert ist) kopiert werden.

  • Weil in SQL Server Express Edition dasselbe Dateiformat wie in anderen Versionen von SQL Server 2005 verwendet wird, können Sie die MDF- und LDF-Dateien auf einen Server kopieren, auf dem SQL Server ausgeführt wird, und anschließend die Dateien als Datenbank anfügen.

  • Wenn Sie eine leere SQL Server Express Edition-Datenbank kopieren möchten, die ein Datenbankschema, jedoch keine Daten enthält, können Sie mit den SQL Server-Verwaltungstools Skripts generieren, die in der Zieldatenbank ausgeführt werden können, um das Schema aus der Entwicklungsdatenbank zu duplizieren.

Hinweis:

Wenn Sie die SQL Server Express Edition-Datenbank auf einem Webserver bereitstellen, der mehrere Sites hostet, zwischen denen kein Vertrauensverhältnis besteht, können Sie nicht mithilfe von dateibasierten Verbindungen oder Benutzerinstanzen sicherstellen, dass die Daten nicht für andere Anwendungen auf dem Server verfügbar gemacht werden. In diesem Fall empfiehlt es sich, den Inhalt der SQL Server Express Edition-Datenbank zu einer anderen Version von SQL Server 2005 zu migrieren, auf die die bereitgestellte ASP.NET-Anwendung zugreifen kann.

Wenn die SQL Server Express Edition-Datenbank verschlüsselte Informationen, z. B. in einer Mitgliedschaftsdatenbank gespeicherte verschlüsselte Kennwörter, enthält, stellen Sie sicher, dass die Verschlüsselungsschlüssel ebenfalls auf den Zielserver kopiert werden.

Wenn Sie die gesamte SQL Server Express Edition-Datenbank verschieben möchten, müssen Sie sicherstellen, dass keine Verbindungen mit der Datenbank geöffnet sind, da andernfalls die Datenbank gesperrt ist.

Entsperren einer gesperrten Datenbank

Wenn eine Verbindung mit einer Datenbank geöffnet ist, ist die Datenbank gesperrt und kann weder verschoben noch gelöscht werden. Bei offenen Verbindungen kann es sich um eine Verbindung mit einer ASP.NET-Anwendung, mit Visual Studio oder einem anderen Programm oder Datenbankclient handeln. Um eine Datenbank zu entsperren, müssen alle offenen Verbindungen mit der Datenbank geschlossen werden. Sie können die offenen Verbindungen mit den folgenden Verfahren schließen:

  • Sie können die Verbindung mit Visual Web Developer schließen, indem Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datenbank klicken und die die Option Trennen auswählen. Oder Sie klicken im Server-Explorer mit der rechten Maustaste auf die Datenbank und wählen Verbindung trennen aus. Visual Web Developer schließt automatisch alle offenen Datenbankverbindungen, wenn Sie eine Webanwendung ausführen oder debuggen.

  • Sie können alle Verbindungen mit einer ASP.NET-Anwendung schließen, indem Sie die Anwendung beenden. Dies kann mithilfe des IIS-Managers oder durch Ablegen der Datei App_offline.htm im Stammverzeichnis der ASP.NET-Anwendung erfolgen (Sie müssen diese Datei entfernen, um die Anwendung neu zu starten).

  • Sie können alle Verbindungen mit anderen Quellen, z. B. einer Windows Forms-Anwendung, schließen, indem Sie das Programm beenden.

Siehe auch

Konzepte

Übersicht über ASP.NET-Profileigenschaften

Weitere Ressourcen

Zugreifen auf Daten mit ASP.NET

Verwalten von Benutzern durch Mitgliedschaft

Verwalten der Autorisierung mithilfe von Rollen