SQL Server Compact Datenbank doch nicht Mehrbenutzer

danieljena

Lt. Junior Grade
Registriert
Aug. 2006
Beiträge
418
Hallo Leute,

laut MS sollte eine SQL Server Compact 4.0 Datenbank Mehrbenutzerfähig sein.

Leider stimmt dies nicht bei mir.

Wenn ich eine Verbindung auf einen Client-PC öffne und dann ebenfalls an einem anderen PC eine Verbindung aufmachen möchte, bekomme ich die lustige Fehlermeldung "Datei wird von einem anderen Prozess verwendet!".

Also heißt es für mich doch keine Mehrbenutzer-Funktion.

Mache ich vielleicht mit dem Connection-String was falsch?
"Data Source=I:\test.sdf; Max Database Size=2048; mode = Read Write"

mfg
danieljena
 
Ich kenn den SQL Server Compact zwar nicht sondern nur den Express, allerdings dürfte es da ähnlich sein: die Verbindung muss auf den Datenmotor zugreifen und nicht auf die Datei selber. d.h. auf einem Pc ist der SQL-Server installiert und stellt die Datei bereit. Bei Data Source müsste dann der PC-Name drinnen stehn. (wenn es ähnlich wie sql-Express ist)
mfg
 
An deinem Source-String sehe ich, dass die Datenbank direkt und nicht vom SQL-Server geöffnet wird. Wenn die DB geteilt werden, soll muss der SQL-Server diese öffnen und die Clients müssen mit dem Server kommunizieren und nicht die DB-Datei selbst öffnen. So einfach.
 
So als Tipp: an deiner Stelle würde ich mir überlegen lieber SQLite zu verwenden. Hat ein paar mehr Features, läuft überall und wird aktiv entwickelt. SQL Server Compact wird leider schon sehr lange nicht mehr weiter entwickelt und unterstützt auch nicht die schicken MS Sachen wie linq-to-SQL (jedenfalls nicht ohne rumgefuddl vorher) etc.. Selbst das kann SQLite inzwischen besser.
 
Zuletzt bearbeitet:
@nitech und @inciter
Die Verbindungszeichenfolge für eine Compact-DB muss den Pfad der Datei beinhalten und nicht eine Netzwerkadresse.

@Madman1209
Ich öffne die Datei im ReadWrite-Mode, also nichts mit exclusiv, wo man nur eine Verbindung haben kann. Trotzdem lässt er nur eine Verbimndung zu.

@BlooDFreeZe
Eine SQLite-DB zu verwenden, fällt leider flach, da diese keine Mehrbenutzer-Zugriff hat.


Mir würde auch eine Idee füe eine andere Datenbank reichen, wenn es hierfür keine Lösung gibt, diese muss aber Dateibasiertet sein und darf keinen Server haben.
 
Hi,

Ich öffne die Datei im ReadWrite-Mode, also nichts mit exclusiv, wo man nur eine Verbindung haben kann. Trotzdem lässt er nur eine Verbimndung zu.

ist mir klar, von exclusiv habe ich auch nicht gesprochen. SQL Compact ist mehrverbindungsfähig, nicht mehrplatzfähig! Also mehrere Verbindungen kein Problem, aber nur vom selben Rechner! Zumindest laut Microsoft Forum. Keine Ahnung, ob das mit der aktuellen Version auch noch so ist.

VG,
Mad
 
@danieljena
Hmm also hier: http://www.sqlite.org/faq.html#q5 steht, dass man parallel lesen kann, aber nur einer schreiben. Sollte also eigentlich auch kein Problem mit mehreren Benutzern sein, wenn du nicht extrem viele parallele Schreibzugriffe brauchst.

@Madman
Das Problem ist, dass in SQL Compact 4 nie wirklich viel reingesteckt wurde und es sogar weniger kann als 3.5. Siehe z.B. hier: http://erikej.blogspot.de/2011/01/comparison-of-sql-server-compact-4-and.html Solche Features gibt's da nicht mehr :(
 
Zuletzt bearbeitet:
@Madman1209
Das will irgendwie nicht in meinen Kopf rein. Wie sinnvoll ist es, ein Datenbanksystem zu entwerfem, das mehrere Verbindungen haben kann, aber nur von einem Rechner aus? Normaler Weise greife ich an einem Rechner ja nur mit einem Progi auf die Datenbank drauf zu -> also eine Verbindung.

@BlooDFreeZe
Ok, das habe ich bisher nciht gelesen. Werde es demnächst mal probieren, wie es sich mit parallelen Zugriffen verhält.
 
Hi,

Wie sinnvoll ist es, ein Datenbanksystem zu entwerfem, das mehrere Verbindungen haben kann, aber nur von einem Rechner aus?

Sehr sinnvoll, weil du im Normalfall vom Clientrechner einen Server aufrufst und der die Daten bereitstellt oder ggf. von einem Datenbankserver holt und nicht jeder Client einzeln. Ist zumindest bei jeder aktuellen Webapplikation so. Halte ich auch für deutlich sinnvoller als umgekehrt, schon alleine weil man die übermittelten Daten noch validieren kann und nicht jeder am Ende die Zugangsdaten zur Datenbank lokal liegen hat.

VG,
Mad
 
Der SQL Server Compact ist als lokale Datenbank im Embedded Bereich gedacht, nicht als Datenbank Server im Netz. Dafür ist der SQL Server Express da.
 
Gerade zum Feierabend ne neue Info bekommen, dass bei uns in baldiger Zukunft Umstrukturierungen im Netzwerk stattfinden. Erst wenn die am Ziel sind, kann ich mir (neue) Gedanken machen, unser Progi umzubauen.
Trotzdem Danke an alle, habt mir trotzdem weitergeholfen :)
 
Hi,

meld dich doch einfach nochmal hier wenn was ansteht, also falls man helfen kann :)

VG,
Mad
 
das werd ich dann machen, aber vielleicht wird ja doch noch mal alles anders. :heul:

"Ist ein Problem fast behoben, steht das Nächste bereits hinten an"
 

Ähnliche Themen

Zurück
Oben