Laden...

Umstellung von Access auf SQL (Server)

Letzter Beitrag vor 12 Jahren 10 Posts 2.475 Views
Umstellung von Access auf SQL (Server)

Hallo erstmal, mein erster Beitrag hier aber wird bestimmt nicht mein letzter sein.

Zu meinem Problem : Ich arbeite derzeit an einem Projekt welches es mehreren (!) Benutzern gleichzeitig(!) ermöglichen soll auf eine Datenbank die auf einem Netzwerk(!) liegt zuzugreifen. Zusätzlich sollen die User für einen Offline-Betrieb(!) die Datenbank auf ihren Rechner kopieren und damit weiterarbeiten können.
Dafür wird bisher Microsoft Access verwendet.

Ich als Entwickler wurde nun gern auf SQL umsteigen da ich durch O/R Mapping den Quellcode um einige häßliche SQL-Statements erleichtern könnte.
**Gibt es nun eine Form einer SQL Datenbank welche ohne Server auskommt also quasi wie eine Access Datenbankdatei verwendet werden kann? **
O/R Mapping mit Access wurde schon versucht aber dafür ist es nun wirklich nicht ausgelegt.

Wahlweise nehme ich auch Vorschläge in der Form entgegen die es sehr einfach machen einen SQL Server auf einem Netzwerk einzurichten und diese Datenbank dann auch Offline zu verwenden.

Danke schonmal im Vorraus für jedwede Antwort.

Gruß DR

Hallo DeadRabbid,

herzlich willkommen hier auf myCSharp.de!

mehreren (!) [...] gleichzeitig(!) [...] Netzwerk(!)[...] Offline-Betrieb(!)

Man könnte grad' meinen, das wäre was extrem Besonderes 😉

auf ihren Rechner kopieren und damit weiterarbeiten können. Dafür wird bisher Microsoft Access verwendet.

Access taugt generell nicht wirklich für Mehrbenutzersysteme - und das physische Kopieren von Datenbanken, um Offline-Zugriff zu ermöglichen, ist auch keine gute Idee (mitunter, weil dann relativ schnell Änderungen im Offline-Modus verloren gehen, wenn man nicht spezielle und extrem fehleranfällige Synchronisationslogik implementiert und zudem sehr leicht Inkonsistenzen entstehen können).

Wahlweise nehme ich auch Vorschläge in der Form entgegen die es sehr einfach machen einen SQL Server auf einem Netzwerk einzurichten und diese Datenbank dann auch Offline zu verwenden.

Das ist die bessere Variante:
Schaue dir mal SQL Server-Replikation an - das sollte das sein, was du suchst.
Alternativ bietet sich zur Not auch das Microsoft Sync Framework an (das ist dann aber IMHO mit mehr Aufwand in der Implementierung verbunden).

Es gibt eine MSSQL Embedded Datenbank , schau mal unter dem Stcihwort

"Microsoft SQL Server Compact"

Da solltest du alles weitere finden. Lässt sich Quasi wie ein MSSQL Server verwenden besteht allerdings nur aus einer Datei.

gruß

Man könnte grad' meinen, das wäre was extrem Besonderes 😉

Mir war natürlich bewusst das ich quasi die Standardvorgaben einer jeden Datenbank beschreib aber ich dachte ich hebs hervor weils mein erster Beitrag ist und ich "mein Problem exakt formulieren" wollte 😉

Also danke schonmal für deine Anmerkungen, mit der Synchronisation werd ich mir nochmal genauer ansehen.

Microsoft SQL Server Compact

Oh. Merkwürdig das ich darüber noch nicht gestoßen bin. Sehr herzlichen Dank, sieht mir stark nachdem aus was ich suche.

MfG DR

Sehr herzlichen Dank, sieht mir stark nachdem aus was ich suche.

Ist aber nicht mehrbenutzerfähig.

Muss es denn ein Rich-Client sein? Überlegt einmal, ob vielleicht auch eine Webanwendung in Betracht kommt. In Zeiten von Smartphones etc. hättest du auch unterwegs z
Zugriff und die Datenabfragen gehen nur zwischen Webserver und Datenbank hin und her.

Das Thema Replikation gerade mit der SQL-Server Replikation ist alles andere als trivial. Hier gilt es einiges zu beachten und vor allem sollte die Datenbankstruktur sehr simpel gehalten werden. Ich würde versuchen mir diese Probleme vom Leib zu halten. Die Replikation wird übrigens auch über UNC-Freigaben durchgeführt...sehr hässlich (ist gibt allerdings auch die bereits angesprochene Möglichkeit über HTTP).

Sehr herzlichen Dank, sieht mir stark nachdem aus was ich suche.
Ist aber nicht mehrbenutzerfähig.

Zitat MSDN :

Um den gleichzeitigen Zugriff mehrerer Anwendungen auf dieselbe Datenbank zu unterstützen, bietet SQL Server Compact Edition Unterstützung für den Mehrbenutzerbetrieb. Die Mehrbenutzerunterstützung ermöglicht, dass mehrere Benutzer einer Datenbank Daten synchronisieren können, ohne die Verbindung mit der Datenbank vor einer Mergereplikation oder dem Remotedatenzugriff (RDA) trennen zu müssen. Weitere Informationen über die Synchronisierung im Mehrbenutzerbetrieb finden Sie unter "Multiuser Access and Remote Data Access (RDA)" und "Multiuser Access and Synchronization" in SQL Server Compact Edition Books Online.

Soweit ich das verstanden hab also doch oder?!

Muss es denn ein Rich-Client sein? Überlegt einmal, ob vielleicht auch eine Webanwendung in Betracht kommt. In Zeiten von Smartphones etc. hättest du auch unterwegs z
Zugriff und die Datenabfragen gehen nur zwischen Webserver und Datenbank hin und her.

Das Thema Replikation gerade mit der SQL-Server Replikation ist alles andere als trivial. Hier gilt es einiges zu beachten und vor allem sollte die Datenbankstruktur sehr simpel gehalten werden. Ich würde versuchen mir diese Probleme vom Leib zu halten. Die Replikation wird übrigens auch über UNC-Freigaben durchgeführt...sehr hässlich (ist gibt allerdings auch die bereits angesprochene Möglichkeit über HTTP).

Nun , ganz freie Hand hab ich bei diesem Projekt leider nicht. Eine Webanwendung wäre auch etwas zuviel da das Programm nur im Intranet laufen soll da es "sensible" Daten enthält. Das Replikation nicht ganz trivial ist hab ich auch schon bemerkt als ich mich gerade darüber informiert habe.

Aber danke auch für deinen Beitrag. Bin positiv überrascht wie schnell und gut einem hier geholfen wird 😃

Mfg DR

Aber warum dann keine Webanwendung im Intranet? Ihr habt doch bestimmt VPN-Zugang?

Soweit ich das verstanden hab also doch oder?!

Das es teilweise funktioniert, mag stimmen - aber konzipiert sind embedded Datenbanken quasi nie für "echten" Mehrbenutzerbetrieb.
Wenn so etwas historisch "gewachsen" ist, kann man es noch "entschudligen", aber bei einer Neuimplementierung sollte man IMHO nicht gleich mit angezogener Handbremse losfahren 😉

Siehe auch SQL Server CE in a multi user scenario - is this really, really stupid?.