Freigeben über


Übersicht über gelegentlich verbundene Anwendungen

Eine gelegentlich verbundene Anwendung ist eine Anwendung, die Daten einer Remotedatenbank verwendet, jedoch möglicherweise nicht immer Zugriff auf die Remotedatenbank hat. Gelegentlich verbundene Anwendungen werden auch verwendet, wenn zwar ein ständiger Zugriff möglich ist, es jedoch nicht sinnvoll ist, in der Remotedatenbank ständig Daten abzufragen, die sich selten ändern, wie z. B. eine Zustandsliste oder Produktkategorien. In solchen Fällen können die Anwendungen Daten einer lokalen Datenbank auf dem Client verwenden und die Daten von Zeit zu Zeit mit der Remotedatenbank auf dem Server synchronisieren.

Wenn Ihre Anwendung also von einer Remotedatenbank Daten anfordert, die nicht ständig aus der Datenbank abgerufen werden müssen, können Sie die Daten in einem lokalen Datenbankcache auf dem Clientcomputer oder direkt in Ihrer Anwendung speichern. Angenommen, eine Bestandskontrollanwendung verwendet Daten aus mehreren Tabellen einer Datenbank. Die Anzahl vorrätiger Artikel für einzelne Produkte ist eine wichtige Information, die sich ständig ändert. Daher sollte die Anwendung nach Möglichkeit die aktuellen Werte in der Datenbank wiedergeben. Die Anwendung zeigt jedoch auch eine sich selten ändernde Liste gültiger Transportunternehmen an. Diese gültigen Transportunternehmen sind in der Tabelle der Spediteure gespeichert und müssen nicht bei jeder Abfrage aus der Datenbank abgerufen werden. Wenn Sie diese Tabelle der Spediteure in einem Cache für die lokale Datenbank speichern, können Sie die Anzahl unnötiger Roundtrips der Anwendung zur Remotedatenbank verringern. Einen Cache für die lokale Datenbank sollten Sie also nicht nur für gelegentlich verbundene Anwendungen verwenden, sondern auch zum Speichern von Daten, die sich selten oder in bestimmten Abständen ändern.

Sie können die Zwischenspeicherung für einzelne Tabellen, Gruppen von Tabellen oder für bestimmte Datensätze konfigurieren, die aus einer Tabelle abgefragt werden (z. B. nur Kunden mit einem bestimmten Handelsvertreter).

Die Synchronisierung von Daten zwischen Client- und Serverdatenbanken wird durch Microsoft Synchronization Services für ADO.NET (den Microsoft.Synchronization.Data-Namespace) erleichtert. Sie können die Synchronisierung in Visual Studio visuell im Dialogfeld Datensynchronisierung konfigurieren konfigurieren oder mit dem Assistenten zum Konfigurieren von Datenquellen, wenn Sie ein typisiertes Dataset erstellen. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren der Datensynchronisierung in einer Anwendung und unter Exemplarische Vorgehensweise: Erstellen einer gelegentlich verbundenen Anwendung mit dem Assistenten zum Konfigurieren von Datenquellen.

Zudem unterstützt Visual Studio die Funktion zur Nachverfolgung von Änderungen in SQL Server 2008. Sie können die Änderungsnachverfolgung von SQL Server 2008 aktivieren, wenn Sie die Synchronisierung im Dialogfeld Datensynchronisierung konfigurieren oder im Assistenten zum Konfigurieren von Datenquellen konfigurieren. Weitere Informationen hierzu finden Sie unter Gewusst wie: Konfigurieren der Datensynchronisierung zum Verwenden der SQL Server-Änderungsverfolgung.

Einschränkungen bei lokalen Datenbankcaches für SQL Azure

Sie können den lokalen Datenbankcache verwenden, um Daten aus SQL Azure mit einer lokalen SQL Compact-Datenbank zu synchronisieren. Cloud-basierte Dienste wie SQL Azure greifen auf Umgebungen mit paralleler Nutzung zurück, bei denen Kunden die gleiche Hardware verwenden, die vorhandenen Datenanbieter aber nicht für diese parallele Nutzung optimiert wurden. Um einen Kunden vor den Auswirkungen einer erhöhten Ressourcenauslastung durch einen anderen Kunden zu schützen, beschränkt SQL Azure die zugewiesenen Ressourcen für einzelne Anforderungen durch einen Einschränkungsmechanismus. Genauer gesagt begrenzt SQL Azure die zulässige Ausführungszeit für eine Transaktion und die Menge an Protokolldaten, die während einer einzelnen Transaktion generiert werden dürfen.

Sie sollten diese Anbieter für einfache Szenarien und kleine Datenmengen verwenden. Wenn Sie versuchen, eine große Datenmenge zu synchronisieren, schlägt der Synchronisierungsvorgang möglicherweise aufgrund dieser Einschränkungen fehl. Wenn Probleme durch diese Einschränkungen auftreten, gibt es keine Möglichkeit, die Anzahl der Änderungen zu reduzieren, um Synchronisierungsfehler zu verhindern. Weiterhin sind diese Anbieter nicht für erweitertere Szenarien geeignet, die eine bidirektionale Synchronisierung erfordern.

Ausführliche Informationen zu Komponenten, die für Szenarien wie SQL Azure optimiert wurden, finden Sie unter https://go.microsoft.com/fwlink/?LinkId=180745.

Synchronization Services-API (Microsoft.Synchronization.Data)

Microsoft Synchronization Services für ADO.NET ist für gelegentlich verbundene Anwendungen vorgesehen. Sie können damit Daten aus unterschiedlichen Quellen über zwei- oder n-schichtige sowie dienstbasierte Architekturen synchronisieren. Die Synchronization Services-API repliziert nicht nur eine Datenbank und deren Schema, sondern stellt auch verschiedene Komponenten zum Synchronisieren von Daten zwischen Datendiensten und einem lokalen Speicher bereit. Anwendungen werden in zunehmendem Maße auf mobilen Clients wie tragbaren Computern und Geräten eingesetzt, die nicht über eine ständige oder zuverlässige Netzwerkverbindung mit einem zentralen Server verfügen. Diese Anwendungen sind auf eine lokale Kopie der Daten auf dem Client angewiesen. Entscheidend ist jedoch auch, dass die lokale Kopie der Daten mit den Daten auf einem zentralen Server synchronisiert werden kann, wenn eine Netzwerkverbindung verfügbar ist. Die Synchronization Services-API, die nach den APIs für den ADO.NET-Datenzugriff konzipiert ist, ermöglicht die Synchronisierung der Daten auf intuitive Weise. Mit dieser API findet das Erstellen von Anwendungen, die eine ständige Netzwerkverbindung erfordern, seine logische Fortsetzung im Erstellen von gelegentlich verbundenen Umgebungen.

Installieren der Synchronization Services-API und -Dokumentation

Die Synchronization Services-API gehört nicht zu .NET Framework. Sie wird zusammen mit SQL Server Compact 3.5 installiert. (SQL Server Compact 3.5 wird standardmäßig zusammen mit Visual Studio installiert.) Die Synchronization Services-Dokumentation wird standardmäßig nicht installiert. Sie ist daher nur verfügbar, wenn die Hilfe für die Onlineverwendung konfiguriert ist. Wenn Sie die Synchronization Services-Dokumentation für die lokale Verwendung installieren möchten, müssen Sie zunächst die Hilfesammlung von der Website Microsoft Synchronization Services for ADO.NET Books Online herunterladen.

Integrieren der Datensynchronisierung in Anwendungen mithilfe von Visual Studio

Für die Integration der Datensynchronisierung in Ihre Anwendung wird von Visual Studio eine Vorlage mit der Bezeichnung Cache für lokale Datenbanken bereitgestellt. Cache für lokale Datenbanken ist als neue Projektelementvorlage verfügbar. (Klicken Sie im Menü Projekt auf Neues Element hinzufügen.) Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren der Datensynchronisierung in einer Anwendung.

Die Synchronisierung kann nicht nur mit der Vorlage Cache für lokale Datenbanken, sondern auch mithilfe des Assistenten zum Konfigurieren von Datenquellen konfiguriert werden. Wählen Sie bei der Konfiguration eines typisierten Datasets auf der Seite Datenbankobjekte auswählen des Assistenten die Option Zwischenspeichern der lokalen Datenbank aktivieren aus. Weitere Informationen hierzu finden Sie unter Exemplarische Vorgehensweise: Erstellen einer gelegentlich verbundenen Anwendung mit dem Assistenten zum Konfigurieren von Datenquellen.

Wenn Sie einen Cache für lokale Datenbanken hinzufügen, wird das Dialogfeld Datensynchronisierung konfigurieren geöffnet. In diesem Dialogfeld geben Sie Informationen über den Client und Server an, um die erforderlichen Synchronisierungskomponenten einzurichten. Der Cache für die lokale Datenbank speichert Daten lokal in einer SQL Server Compact 3.5-Datenbank auf dem Client. Sie können eine vorhandene SQL Server Compact 3.5-Datenbank als Cache für die lokale Datenbank verwenden. Falls noch keine lokale Datenbank vorhanden ist, können Sie mit dem Dialogfeld Datensynchronisierung konfigurieren eine neue lokale Datenbank erstellen. Zum Erstellen einer neuen lokalen SQL Server Compact 3.5-Datenbank legen Sie die Clientverbindung (im Dialogfeld Datensynchronisierung konfigurieren) fest, sodass auf Grundlage der für die Serververbindung ausgewählten Tabellen eine neue SQL Server Compact 3.5-Datenbank erstellt wird.

Tipp

Mit dem Dialogfeld Datensynchronisierung konfigurieren können Sie Microsoft Synchronization Services für ADO.NET nur für Downloadszenarien konfigurieren. Das bedeutet, dass nach der Konfiguration der Datensynchronisierung mithilfe dieses Dialogfelds der Aufruf von Microsoft.Synchronization.Data.SyncAgent.Synchronize nur die lokale Datenbank mit Änderungen aus der Remotedatenbank aktualisiert. Änderungen, die an den Daten in der lokalen Datenbank vorgenommen wurden, werden nicht zur Remotedatenbank hochgeladen. Nachdem Sie die Datensynchronisierung mithilfe des Dialogfelds Datensynchronisierung konfigurieren konfiguriert haben, können Sie Uploads (bidirektionale Synchronisierung) während der Synchronisierung programmgesteuert aktivieren. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren einer lokalen und einer Remotedatenbank für bidirektionale Synchronisierung.

Konfigurieren der Remotedatenbank für die Synchronisierung

Damit die Datensynchronisierung funktioniert, müssen für jede Tabelle der Remotedatenbank, mit der eine Synchronisierung durchgeführt werden soll, einige zusätzliche Schritte ausgeführt werden. Mit dem Dialogfeld Datensynchronisierung konfigurieren werden SQL-Skripts erstellt, die in der Datenbank ausgeführt werden, um die erforderlichen Objekte zu erzeugen (siehe nachfolgende Tabelle). Alle SQL-Skripts, die vom Synchronisierungs-Designer erstellt werden, werden im Projekt im Ordner SQLScripts gespeichert.

Tipp

Die vom Dialogfeld Datensynchronisierung konfigurieren generierten SQL-Skripts werden standardmäßig ausgeführt. Sie können wählen, ob die Skripts generiert und ausgeführt werden, indem Sie die Optionen für die Skriptgenerierung im Dialogfeld Tabellen für die Offlineverwendung konfigurieren festlegen.

In der Standardeinstellung erfolgen die Ausführung der Skripts und die Aktualisierung der Remotedatenbank mithilfe des Dialogfelds Datensynchronisierung konfigurieren automatisch, sobald das Dialogfeld geschlossen wird. Deaktivieren Sie das Kontrollkästchen Skripts beim Schließen dieses Dialogfelds ausführen, wenn die Skripts nicht automatisch ausgeführt werden sollen. Wenn die Remotedatenbank bereits über die erforderlichen Nachverfolgungsspalten, Trigger und die Tabelle für gelöschte Elemente verfügt, werden keine Skripts generiert. Wenn also keine Änderungen an der Remotedatenbank erforderlich sind, werden keine Skripts erstellt.

Die folgende Tabelle enthält eine Liste der erforderlichen Elemente der Remotedatenbank sowie Erklärungen zu den einzelnen Elementen:

Ergänzungen für jede synchronisierte Tabelle der Remotedatenbank

Erklärung

Spalte LastEditDate

Diese Spalte muss in jeder Tabelle, die synchronisiert wird, einen DateTime- oder TimeStamp-Wert enthalten. Sie wird mit der Spalte LastEditDate auf dem Client verglichen, um Datensätze zu ermitteln, die seit dem letzten Synchronisierungsaufruf auf dem Server geändert wurden.

Spalte CreationDate

Diese Spalte muss in jeder Tabelle, die synchronisiert wird, einen DateTime- oder TimeStamp-Wert enthalten. Sie wird mit der Spalte CreationDate auf dem Client verglichen, um Datensätze zu ermitteln, die seit dem letzten Synchronisierungsaufruf auf dem Server hinzugefügt wurden.

Tabelle gelöschter Elemente (Tabellenname_Deleted)

Elemente werden in diese Tabelle verschoben, wenn sie aus der Tabelle auf dem Datenbankserver gelöscht werden. Dies geschieht, um seit dem letzten Synchronisierungsaufruf vom Server gelöschte Datensätze zu ermitteln. Jede Tabelle, die synchronisiert wird, benötigt eine Tabelle gelöschter Elemente, um aus der Remotetabelle gelöschte Datensätze zu verfolgen.

DeletionTrigger (Tabellenname_DeletionTrigger)

Dieser Trigger wird immer dann ausgeführt, wenn ein Datensatz aus der Serverdatenbanktabelle gelöscht wird. Gelöschte Datensätze werden in die Tabelle gelöschter Elemente verschoben. Sie werden deshalb in die Tabelle gelöschter Elemente verschoben, da Datensätze in der Clientdatenbank, die nicht in der Serverdatenbank enthalten sind, sonst als neue Datensätze behandelt und wieder auf dem Server hinzugefügt würden. Die Synchronisierungsdienste stellen anhand der Tabelle gelöschter Elemente fest, dass ein Datensatz aus der Clientdatenbank gelöscht werden muss und nicht wieder der Serverdatenbank hinzugefügt werden soll.

InsertTrigger (Tabellenname_InsertTrigger)

Dieser Trigger füllt die Spalte CreationDate mit dem aktuellen Datum und der aktuellen Uhrzeit auf, wenn neue Datensätze hinzugefügt werden.

UpdateTrigger (Tabellenname_UpdateTrigger)

Dieser Trigger füllt die Spalte LastEditDate mit dem aktuellen Datum und der aktuellen Uhrzeit auf, wenn vorhandene Datensätze geändert werden.

Starten des Synchronisierungsprozesses in einer Anwendung

Fügen Sie nach der Angabe der erforderlichen Informationen im Dialogfeld Datensynchronisierung konfigurieren der Anwendung Code zum Starten der Synchronisierung hinzu. Es ist wichtig zu verstehen, dass durch die Datensynchronisierung die lokale Datenbank aktualisiert wird, nicht jedoch die Tabelle im Dataset oder ein anderes Objekt in der Anwendung. Denken Sie daran, die Datenquelle der Anwendung mit den aktualisierten Daten aus der lokalen Datenbank neu zu laden. Rufen Sie z. B. die TableAdapter.Fill-Methode auf, um die Datentabelle des Datasets mit den aktualisierten Daten der lokalen Datenbank zu laden.

Siehe auch

Aufgaben

Gewusst wie: Konfigurieren der Datensynchronisierung in einer Anwendung

Exemplarische Vorgehensweise: Erstellen einer gelegentlich verbundenen Anwendung

Gewusst wie: Konfigurieren einer lokalen und einer Remotedatenbank für bidirektionale Synchronisierung

Konzepte

SQL Server Compact 3.5 und Visual Studio

Weitere Ressourcen

Zugreifen auf Daten in Visual Studio