none
Dateifreigabeverletzung SQL Compact Edition 3.5

    Frage

  • Hallo,

    ich habe eine Anwendung geschrieben die von zwei Rechnern aus auf eine SQL Compact 3.5 Datenbank zugreift. nun wenn beide Anwender gleichzeitig in der Datenbank lesen wollen bekomme ich von meinen typerisierten Tabeladapter eine SQL-Ausnahme: Dateifreigabeverletzung. Möglicherweise wird die Datei bereits von einen anderen Process verwendet. Nun wundere ich mich da ich glaube gelesen zu haben das mann mehrere Verbindung zu einer SQL Compact Editon Datenbank aufbauen kann..

    Was mach ich denn da falsch ?

    Gruß Daniel

    Freitag, 25. Januar 2013 11:17

Antworten

  • Hallo Daniel,

    mehrere Verbindungen schon, aber nur von einem Rechner / Gerät aus,
    siehe den Link den Olaf gepostet hat (und dann aufmerksam lesen).

    Kurz: SQL Server Compact ist nicht mehrplatzfähig.

    Dafür musst Du die gute alte Access / Jet Engine oder einen richtigen SQL Server verwenden.

    Gruß Elmar

    • Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 25. Januar 2013 18:03
    • Als Antwort markiert Daniel, Samstag, 26. Januar 2013 09:29
    Freitag, 25. Januar 2013 13:38
    Beantworter

Alle Antworten

  • Nun wundere ich mich da ich glaube gelesen zu haben das mann mehrere Verbindung zu einer SQL Compact Editon Datenbank aufbauen kann..

    Hallo Daniel,

    das stimmt, siehe Accessing and Modifying Databases (SQL Server Compact) => Concurrency

    Nun wäre die Frage nach den Details, wie Du auf die CE Datenbank zugreifst etc. Vor allem wundert mich nun etwas der Begriff "Dateifreigabeverletzung", wobei bei den MS typischen Übersetzungen das nicht viel sagen will.


    Olaf Helper

    Blog Xing

    Freitag, 25. Januar 2013 11:30
  • ich habe eine Anwendung geschrieben die von zwei Rechnern aus auf eine SQL Compact 3.5 Datenbank zugreift. nun wenn beide Anwender gleichzeitig in der Datenbank lesen wollen bekomme ich von meinen typerisierten Tabeladapter eine SQL-Ausnahme: Dateifreigabeverletzung. Möglicherweise wird die Datei bereits von einen anderen Process verwendet. Nun wundere ich mich da ich glaube gelesen zu haben das mann mehrere Verbindung zu einer SQL Compact Editon Datenbank aufbauen kann..

    Was mach ich denn da falsch ?

    hast Du den Multi-User Option beim Zugriff auf die DB gesetzt ?

    siehe :

    OleDB: http://msdn.microsoft.com/en-us/library/ms171763%28v=sql.100%29.aspx

    Programmatically: http://msdn.microsoft.com/en-us/library/ms171817%28v=sql.100%29.aspx


    Please use Mark as Answer if my post solved your problem and use Vote As Helpful if a post was useful.

    Freitag, 25. Januar 2013 12:25
  • Hallo Daniel,

    mehrere Verbindungen schon, aber nur von einem Rechner / Gerät aus,
    siehe den Link den Olaf gepostet hat (und dann aufmerksam lesen).

    Kurz: SQL Server Compact ist nicht mehrplatzfähig.

    Dafür musst Du die gute alte Access / Jet Engine oder einen richtigen SQL Server verwenden.

    Gruß Elmar

    • Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 25. Januar 2013 18:03
    • Als Antwort markiert Daniel, Samstag, 26. Januar 2013 09:29
    Freitag, 25. Januar 2013 13:38
    Beantworter
  • Hallo zusammen,

    ersteinmal Danke für die zahlreichen und Hilfreichen Antworten.

    Ich habe sowas ( kein gleichzeitiger Zugriff von mehreren Rechnern auf der SQL Compact DB ) schon fast befürchtet.

    Da ich schon echt weit bin mit der Anwenung und diese später auf eine Mehrplatzfähigkeit angewiesen ist, ist das echt ein herber Rückschlag.

    Da ich aber (noch) nicht die Flinte ins Korn werfen will, würde ich es Gerne mit der Visual Studio unterstützten SQL Server Express Edition versuchen.

    Würde das dann funktionieren ?

    Viele Grüße

    Daniel

    Freitag, 25. Januar 2013 20:27
  • Hallo Daniel,

    SQL Server Express ist als "richtiger" Server mehrplatzfähig.
    Da das SQL weitgehend kompatibel ist, sollte eine Umstellung relativ schnell gehen.
    Solltest Du eine der Visual Studio Express Editionen (VB, C#) nutzen, ist zu beachten,
    dass die Designer nur einen lokalen Zugriff erlauben, das gilt aber nicht für .NET / die Anwendung.

    Gruß Elmar

    Freitag, 25. Januar 2013 22:11
    Beantworter
  • Hallo zusammen,

    Nun hab ich angefangen meine Anwendung auf den SQL Server Express umzustellen. Nun bekommen ich folgende Fehlermeldung beim befüllen einer Datatable :

    ....Benutzer.mdf' befindet sich in einem Netzwerkpfad, der für Datenbankdateien nicht unterstützt wird.
    Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei W:\Obl Berlin\AVI Manager\Datenbank\AVI-Manager-Data\Benutzer.mdf. Eine Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei kann nicht geöffnet werden, oder sie befindet sich in der UNC-Freigabe.

    Die Datenbank liegt später (damit mehrer Arbeitsplätze später darauf zugreifen können) auf ein Nertzwerkordner.

    Ich habe auch schon die Suchmaschine bemüht und Herausgefunden das wohl der Anbieter der Netzwerk Resource auch den SQL-Server Installiert haben muss.

    Nun schreibe ich die Anwendung für mich und meine Kollegen um uns die Arbeit etwas zu erleichtern. Muss aber damit leben das wir uns eines Firmennetzwerkes als Grundlage bedienen müssen ( d.h. ich habe nicht alle Adminrechte des Netzwerks.) Was muss ich den meinen I.T. Leuten sagen was sie sich da Installieren müssen damit ich die *.mdf Datei auch auf diesen Netzwerkordner zum laufen bringe (reicht da einfach der SQL Server 2008 Express Edition)? Oder hab ich da Grundsätzlich n Denkfehler drin?Gerade bezug nehmend auf den lezten Satz von Elmar : "Solltest Du eine der Visual Studio Express Editionen (VB, C#) nutzen, ist zu beachten,
    dass die Designer nur einen lokalen Zugriff erlauben, das gilt abernicht für .NET / die Anwendung."

    Ich hab zwar die Visual Sutdio Professional Version aber auf mein Dienstrechner Läuft leider nur VS Express 2008

    Gruß Daniel

    Dienstag, 29. Januar 2013 16:34
  • Hallo,SQL Server Express ist ein richtiger Server und sorgt selbst für den Datenaustausch =>
    deswegen sind Netzlaufwerke (im Standard) tabu.

    Installiere die Datenbank-Dateien auf die lokale Festplatte des Rechners mit der SQL Server Express Instanz.
    Konfiguriere den Netzwerkzugriff für den SQL Server, dann können alle Rechner im Netzwerk darauf zugreifen:
    Aktivieren des Netzwerkzugriffs für SQL Server Express

    Was Visual Studio angeht: Die Express Editionen (bzw. deren Designer) erlauben nur den Zugriff
    über Benutzerinstanzen auf dem lokalen Rechner. Wenn Du die Designer für DataSet und TableAdapter nutzen willst,
    müsstest Du dann eine lokale Express Instanz haben. Das betrifft aber nicht das Programm selbst;
    dort kannst Du auf jeden beliebigen SQL Server im Netzwerk zugreifen, d. h. ändern der Verbindungszeichenfolge reicht.

    Da man Entwicklung und Produktiv-Datenbank trennen sollte, ist es eh besser eine lokale Installation zu verwenden
    und erst wenn es fertig ist, das Programm zum allgemeinen Gebrauch auf die produktiven Daten zugreifen zu lassen.

    Gruß Elmar

    Dienstag, 29. Januar 2013 17:12
    Beantworter