VWD2005 umfasst SQL Server 2005 Express Edition, eine kostenlose Version von SQL Server 2005, die sich an Laien- oder begeisterte Entwickler richtet, die Anwendungen mit einer einfachen Datenbanklösung erstellen möchten. Da SQL Server Express das vollständige SQL Server-Programmiermodell wie SQLCLR, T-SQL, gespeicherte Prozeduren, Ansichten, Trigger und XML-Datentypen unterstützt, können Sie SQL Server Express verwenden, um mehr über diese Technologien zu erfahren und sicherzustellen, dass Ihre Anwendungen ausgeführt werden können Auf Plattformen höherer Ebene (z. B. SQL Server Enterprise Edition). SQL Server Express lässt sich einfach herunterladen und installieren (weniger als 36 MB) und ist in Visual Studio 2005 und Visual Web Developer 2005 enthalten.
Visual Studio enthält Tools für die Datenbankverwaltung, wie etwa den Datenbank-Explorer und den Query Builder, mit denen Sie SQL Server Express-Datenbanken verwalten können. Visual Studio unterstützt außerdem eine neue dateibasierte Datenbank zum Erstellen von SQL Server Express-Datenbanken als Teil eines Projekts. Gleichzeitig bieten Visual Studio 2005 und SQL Server 2005 Express eine Komplettlösung zum Erstellen und Bereitstellen datengesteuerter Webanwendungen, einschließlich der folgenden Funktionen:
· Datenbankprojektdatenelemente
· Lokale Datenbankverbindung
· Datenbankbrowserverwaltung
· Relative Pfadverbindungszeichenfolgen
· XCopy-Bereitstellungsunterstützung
· Integrierte Debugging-Unterstützung
Dieser Artikel beschreibt den dateibasierten Datenbankansatz in Visual Studio 2005 und wie der Designer diese Datenbanken erstellt und verwendet.
Visual Web Developer und DataVisual
Web Developer bieten eine Reihe von Tools für die Verwendung von Datenbanken mit Webanwendungen. Mit dem Datenbankbrowser können Sie ganz einfach eine Verbindung zu einer Datenbank herstellen und ein Datenbankdiagramm oder -schema erstellen oder anzeigen. Sie können auch das Dialogfeld „Abfrage-Generator“ und die Abfrageergebnistabelle verwenden, um die Datenbank abzufragen und Daten aufzufüllen. Das Erstellen neuer Datenbanken (unter Verwendung lokaler Dateien) ist ebenfalls als Projektdatenelemente vorgesehen.
Sobald Sie in Visual Web Developer eine Verbindung zur Datenbank hergestellt haben, können Sie Datenbanktabellen per Drag-and-Drop direkt auf die Seite ziehen, um ein datengebundenes GridView-Steuerelement zu erstellen. Visual Web Developer erstellt automatisch ein zugehöriges Datenquellensteuerelement und konfiguriert dessen Auswahl-, Aktualisierungs-, Einfüge- und Löschvorgänge basierend auf der Datentabelle. Dieser schnelle Vorgang erspart Ihnen viel Arbeit, die zum manuellen Erstellen einer Datenquelle erforderlich ist, und Sie können GridView bei Bedarf problemlos durch ein geeignetes datengebundenes Steuerelement ersetzen.
Lokale Datenbanken und Serverdatenbanken
Möglicherweise sind Sie bereits mit serverbasierten Datenbanken und Verbindungszeichenfolgen vertraut. In diesem Fall ordnet der Datenbankserver (z. B. SQL Server 2005) den Datenbanknamen der vom Server verwalteten Datenbankdatei zu. Sie können eine Verbindung zu einer serverbasierten Datenbank herstellen, indem Sie den Servernamen, den Datenbanknamen und die Anmeldeinformationen angeben, zum Beispiel:
„server=(local)SQLExpress;database=Pubs;Integrated Security=true“.
Visual Studio 2005 unterstützt jedoch auch Konzept der lokalen Datenbanken, bei dem es sich um eine Datei handelt, die dem App_Data-Verzeichnis der aktuellen Webanwendung hinzugefügt wird. Es ist sicher, Datendateien im Verzeichnis App_Data zu speichern, da der Inhalt dieses Verzeichnisses niemals auf Benutzeranfragen reagiert. Dieses Verzeichnis ist auch der empfohlene Speicherort zum Speichern von XML-Dateien und anderen Datenspeichern. Native SQL Server Express-Datenbanken haben die Erweiterung .MDF (z. B. „MyDatabase.MDF“), ein von SQL Server unterstütztes Standarddateiformat. Wenn eine Verbindung zum Server besteht, verfügt die Datenbank auch über eine zugehörige Protokolldatei (z. B. „MyDatabase_log.LDF“). Der Speicherort der Datenbankdatei und der Protokolldatei muss übereinstimmen.
Mithilfe einer relativen Pfadverbindungszeichenfolge können wir automatisch eine lokale Dateidatenbank an SQL Server Express anhängen. Relative Pfade stellen sicher, dass die Datenbankverbindung nicht unterbrochen wird, wenn die Anwendung an einen anderen Speicherort verschoben wird. Die relative Pfadverbindungszeichenfolge in der Webanwendung sieht wie folgt aus:
„server=(local)SQLExpress;AttachDbFileName=|DataDirectory|MyDatabase.mdf;Integrated Security=true;User Instance=true“
Die obige Verbindungszeichenfolge verfügt über zwei weitere zusätzliche Attribute . Die Eigenschaft „AttachDbFileName“ gibt den Speicherort der Datenbankdatei an, die beim Öffnen der Verbindung dynamisch an den Server angehängt wird. Obwohl diese Eigenschaft einen vollständigen Pfad zur Datenbank akzeptieren kann (z. B. mithilfe der |DataDirectory|-Syntax), wird dieser Pfad zur Laufzeit durch das App_Data-Verzeichnis der Anwendung ersetzt. Dadurch wird auch sichergestellt, dass Verbindungen nicht unterbrochen werden, wenn die Anwendung an einen anderen Standort verschoben wird. Die zweite Eigenschaft ist User Instance=true und gibt an, wie SQL Server Express die Datenbank anfügt. In diesem Fall erstellt SQL Server Express einen neuen Prozess, um die Datenbank an die neue Instanz anzuhängen, und wird als der Benutzer ausgeführt, der die Verbindung geöffnet hat. In einer ASP.NET-Anwendung ist dieser Benutzer je nach Betriebssystem das lokale ASPNET-Konto oder der Standardnetzwerkdienst. Um Datenbankdateien, die von Nicht-Administratorkonten (z. B. ASP.NET-Konten) bereitgestellt werden, sicher anzuhängen, ist es notwendig, eine separate SQL Server-Benutzerinstanz zu erstellen.
Bitte beachten Sie: Da standardmäßig alle ASP.NET-Anwendungen im selben Prozess ausgeführt werden, hängen alle Anwendungen die lokale Datenbank an dieselbe SQL Server Express-Instanz an. Dies bedeutet, dass alle Anwendungen den gleichen Zugriff auf alle an diese Instanz angehängten Datenbanken haben, unabhängig davon, an welche Datenbank die Anwendung ursprünglich angehängt wurde. Um verschiedene Anwendungen zu isolieren, muss jede Anwendung in einem anderen Arbeitsprozess oder Anwendungspool (in IIS 6) ausgeführt werden. Aus diesem Grund soll eine lokale SQL Server-Datenbank in erster Linie die Entwicklung erleichtern und nicht eine serverbasierte Datenbank in einer gemeinsam genutzten Hosting-Umgebung ersetzen.
Ein weiterer wichtiger Punkt ist, dass sich nicht zwei Benutzer gleichzeitig mit einer lokalen Datenbank verbinden dürfen. Beim Entwerfen einer Anwendung in Visual Studio gibt der Designer die Verbindung automatisch frei, um sicherzustellen, dass Visual Studio und ASP.NET Datenbankdateien gemeinsam nutzen können (z. B. beim Debuggen einer laufenden Anwendung im Designer).
Erstellen einer lokalen Datenbank
Sie können problemlos eine lokale Datenbank in einem Visual Studio-Webanwendungsprojekt erstellen. Da in Visual Studio bereits SQL Server Express installiert ist, können Sie mit den folgenden Schritten eine lokale Datenbank erstellen, Tabellen hinzufügen und die Daten füllen.
So erstellen Sie eine lokale Datenbank:
1. Klicken Sie mit der rechten Maustaste in den Lösungsbrowser und wählen Sie die Option „Neues Element hinzufügen…“.
2. Wählen Sie den Eintrag „SQL-Datenbank“ und geben Sie einen Dateinamen an, z. B. „Datenbank.mdf“.
3. Visual Studio fordert Sie auf, diese Datei dem App_Data-Verzeichnis hinzuzufügen. Klicken Sie auf „Ja“.
4. Visual Studio fügt diese Datei hinzu und stellt mithilfe des Datenbankbrowsers automatisch eine Verbindung zur Datenbank her.
So fügen Sie der lokalen Datenbank eine Datentabelle hinzu:
1. Klicken Sie im Datenbankbrowser mit der rechten Maustaste auf den Knoten „Tabellen“ und wählen Sie die Option „Neue Tabelle hinzufügen“.
2. Geben Sie den Namen und Typ der Spalte in der Datenbank ein und legen Sie optional weitere Spalteneigenschaften in der Eigenschaftentabelle fest. Um die Beispiel-Kontaktdatenbank einzurichten, führen Sie die folgenden Schritte aus.
3. Setzen Sie den Namen der ersten Spalte auf „ContactID“ und den Datentyp auf „int“. Deaktivieren Sie das Kontrollkästchen „Nullen zulassen“.
4. Klicken Sie mit der rechten Maustaste auf das graue Quadrat links neben der ContactID-Spalte und wählen Sie die Option „Als Primärschlüssel festlegen“.
5. Erweitern Sie in der Tabelle „Spalteneigenschaften“ unten den Knoten „Identifikatorspezifikation“ und setzen Sie „Ist es ein Identifikator“ auf „Ja“.
6. Legen Sie den Namen der zweiten Spalte auf „ContactName“ und den Datentyp auf „varchar(50)“ fest. Lassen Sie das Kontrollkästchen „Nullen zulassen“ aktiviert.
7. Drücken Sie Strg-S, um die Tabelle zu speichern und den Tabellennamen auf „Kontakte“ festzulegen. Klicken Sie auf OK, um die Tabelle zu speichern.
8. Schließen Sie das Tabellendefinitionsfenster.
So füllen Sie eine Tabelle mit Daten:
1. Klicken Sie im Datenbankbrowser mit der rechten Maustaste auf den Datentabellenknoten (z. B. „Kontakte“) und wählen Sie die Option „Tabellendaten anzeigen“.
2. Geben Sie die Daten für die Datentabellenzeilen in das angezeigte Formular ein. Wenn Sie das Kontaktbeispiel oben verwenden, können Sie einen Wert in die Spalte „ContactName“ eingeben und die Datenbank generiert automatisch den entsprechenden ContactID-Wert.
3. Schließen Sie das Tabellenfenster.
Bindung an eine lokale Datenbank
Um eine Bindung an eine lokale Datenbank herzustellen, müssen Sie die ASP.NET-Datenquellensteuerung so konfigurieren, dass sie über eine relative Pfadverbindung eine Verbindung zur Datei herstellt. Um eine SQL Server Express-Datenbank einfach an die SqlDataSource- und GridView-Steuerelemente zu binden, führen Sie die folgenden Schritte aus:
1. Doppelklicken Sie im Lösungsbrowser auf eine Seite (z. B. „Default.aspx“). Visual Studio öffnet diese Seite.
2. Wählen Sie unten im Seitenfenster die Registerkarte „Entwurfsansicht“, um zur Entwurfsansicht zu wechseln.
3. Doppelklicken Sie im Lösungsbrowser auf die Datenbankdatei (z. B. „Database.mdf“). Visual Studio öffnet einen Datenbankbrowser für die Verbindung.
4. Erweitern Sie den Knoten Tabellen, um die Tabellen in der Datenbank anzuzeigen.
5. Ziehen Sie die Tabelle im Datenbankbrowser per Drag-and-Drop auf die geöffnete Seite in der Entwurfsansicht. Visual Studio erstellt eine GridView, die an das SqlDataSource-Steuerelement gebunden ist.
6. Erweitern Sie das „Intelligent Transaction Panel“ des GridView-Steuerelements und wählen Sie Paging, Sortieren und Bearbeiten aus.
7. Drücken Sie Strg-F5, um die Seite auszuführen (ohne Debugging).
Das folgende Beispiel zeigt ein GridView- und SqlDataSource-Steuerelement, das mit einer lokalen Datenbank verbunden ist. Um dieses Beispiel auszuführen, muss das ASP.NET-Prozesskonto über Lese-/Schreibberechtigungen für die MDF- und LDF-Dateien im Verzeichnis ~/App_Data verfügen. Der Prozess der Berechtigungseinstellung ist wie folgt:
1. Wählen Sie die Datei ~/App_Data/Database.MDF im Windows-Browser aus und wählen Sie „Eigenschaften“.
2. Wählen Sie die Registerkarte „Sicherheit“ und klicken Sie auf „Hinzufügen“.
3. Klicken Sie auf „Standort...“, wählen Sie den Namen Ihres Computers (oben in der Liste) aus und klicken Sie auf „OK“.
4. Geben Sie im Textbereich „Objektname“ den Namen des ASP.NET-Prozesskontos ein. Standardmäßig lautet der Name in IIS 6.0 „Netzwerkdienst“ und in IIS 5.x „ASPNET“.
5. Wählen Sie in der Spalte „Zulassen“ „Lesen“ und „Schreiben“ und klicken Sie auf „OK“.
6. Wenn sich im App_Data-Verzeichnis eine LDF-Datei befindet, müssen Sie die obigen Schritte wiederholen, um die Eigenschaften der LDF-Datei festzulegen.
Wenn Sie Visual Studio verwenden, um eine Anwendung auf Ihrem lokalen Computer zu erstellen, verfügen Sie standardmäßig über die oben genannten Berechtigungen für das App_Data-Verzeichnis. Wenn die Berechtigungen einer Datenbankdatei nach dem Anhängen geändert werden müssen, müssen Sie zunächst die Anwendungsdomäne schließen, bevor die neuen Berechtigungen wirksam werden.
<asp:BoundField DataField="ContactID" HeaderText="ID" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="ContactName" HeaderText="Name" SortExpression="Name" />
</Spalten>
</asp:GridView>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ContactsDatabase %>" ID="SqlDataSource1" runat="server" SelectCommand="SELECT [ContactID], [ContactName] FROM [Contacts]" OnSelected="SqlDataSource1_Selected"></ asp:SqlDataSource>
Bereitstellen einer lokalen Datenbank
Einer der Vorteile einer lokalen Datenbankdatei besteht darin, dass sie die Anwendung begleiten und als Teil der Anwendung an andere Standorte oder auf andere Computer verschoben werden kann (natürlich muss auf dem Computer auch SQL Server ausgeführt werden). Äußern). Beim Verschieben der Datenbank muss sich die Datei in einem entsperrten Zustand befinden. Die Datei ist gesperrt, während der Designer oder die Anwendung mit der Datenbank verbunden ist. Zum Entsperren müssen alle aktiven Verbindungen zur Datenbank geschlossen werden. Sie können die folgenden Techniken verwenden, um die Datenbankverbindung zu schließen:
· Wenn ASP.NET die Verbindung geöffnet hat, können Sie die Anwendungsdomäne schließen, indem Sie eine „app_offline.htm“-Datei zum Stammverzeichnis der Webanwendung hinzufügen. Seine Funktion besteht darin, die Anwendungsdomäne (nicht den Prozess) zu schließen und alle Anwendungsanforderungen an diese Datei umzuleiten (wobei ein 404-Antwortcode zurückgegeben wird). Wenn Sie die Anwendung neu starten möchten, löschen Sie einfach diese Datei. Bitte beachten Sie, dass durch einfaches Schließen der Verbindung im Seitencode die Dateisperre nicht aufgehoben wird, da der ADO.NET-Verbindungspool standardmäßig aktive Verbindungen beibehält.
Visual Studio bietet die Funktion „Web kopieren“, mit der Anwendungsdateien mithilfe von xcopy, FTP oder der FrontPage-Servererweiterung aus dem Arbeitsverzeichnis auf den Zielserver kopiert werden können. Der Zielcomputer kann lokal oder remote sein. Sie können die Funktion „Web kopieren“ aufrufen, indem Sie in der Menüleiste von Visual Studio „Website > Website kopieren…“ auswählen.
Obwohl Sie zum Verschieben der Datenbank Copy Web oder einen einfachen xcopy- oder FTP-Vorgang verwenden können, muss auf dem Zielcomputer SQL Server Express ausgeführt werden (unter demselben Instanznamen), damit die Anwendung weiterhin funktioniert. Wir haben bereits erwähnt, dass alle Anwendungen auf dem Zielcomputer einander vertrauen müssen, da alle Anwendungen, auf denen ASP.NET ausgeführt wird, mit derselben SQL-Instanz verbunden sind. Wenn eine Anwendung die Datenbank einer anderen Anwendung nicht sehen kann, empfehlen wir die Verwendung eines serverbasierten Ansatzes (mit SQL-Authentifizierung oder anderen Trennungstechniken) anstelle der lokalen Datenbank. Wenn Sie SQL Server Express als Entwicklungstool verwenden, müssen Sie den Inhalt der SQL Server Express-Datenbank im Rahmen der Produktionsbereitstellung an Kunden kopieren.