2009-06-02 5 views
1

Ich versuche, eine Sql CE 2005-Datenbank auf einem Windows Mobile-Gerät aus zwei verschiedenen Anwendungen zuzugreifen.Sql ce 3.0 Datenbank Multiuser

Aus den Informationen, fand ich Online sollte es aber funktionieren, wenn ich die zweite Verbindung öffnen, erhalte ich eine Verletzung Fehler File-Sharing

"There is a file sharing violation. A different process might be using the file. [ \\\Program Files\xx\DB.sdf ]" 

Alle Ideen, was ich falsch mache ??

+0

siehe http://stackoverflow.com/questions/265691/is-it-safe-to-open-the-same-sdf-database-file-from-two-winmo-different-applicati –

Antwort

3

Das Problem war die Verbindungszeichenfolge .....

"Data Source=\\\Program Files\xx\DB.sdf" offenbar die Datenbank als einen einzelnen Benutzer

mit

"Data Source=Program Files\xx\DB.sdf" öffnet die Datenbank normalerweise ...

0

Ist es der gleiche Prozess verwendet mehrere Threads, um auf diese SDF-Datei oder nur einen Thread zuzugreifen. Wenn es heißt, dass ein anderer "PROCESS" auf die Datei zugreift, was ist das? Ist es VS oder etwas anderes? Ich denke, Sie können den Remote-Prozess-Viewer verwenden, um zu sehen, welche Prozesse im Gerät diese SDF-Datei verwenden. Wenn Sie separat sehen könnten, welche Handles für welche Prozesse in einem Gerät sind, wäre das großartig. Auch sonst versuchen Sie einfach, die SDF-Datei zu löschen (oder verschieben/umbenennen), nachdem Sie einige Prozesse auf dem Desktop beendet haben. Das könnte Ihnen sagen, was der beleidigende Prozess ist.

+0

Nein, sie sind zwei separate Anwendungen. Beide versuchen, dieselbe Datenbank zu öffnen. Man öffnet die Verbindung, und wenn der zweite versucht, es zu öffnen, gibt es den File-Sharing-Verletzungsfehler. Ich verwende diese Verbindungszeichenfolge zum Verbinden. conn = neue SqlCeConnection ("Datenquelle = \\\ Programme \ xx \ DB.sdf"); – Marcom

3

SQL Compact does support multiple connections to the database, even back with version 3.0. Wie öffnet der erste Prozess die Datenbank? Zum Beispiel hat der mobile Query Analyzer von 3.0 und 3.1 die Datenbank exklusiv geöffnet und sie effektiv von jedem anderen Prozess getrennt.

+0

Beide Anwendungen verwenden die gleiche Verbindungszeichenfolge SqlCeConnection conn = neue SqlCeConnection ("Datenquelle = \\\ Programme \ xx \ DB.sdf"); conn.Open(); Die erste Anwendung, die die Datenbank ohne Probleme öffnet. der zweite wirft den Fehler. – Marcom

+0

Ich kann Ihnen sagen, dass es in bestimmten Fällen nicht wichtig ist, dass SQL CE mehrere Verbindungen unterstützt. Sie können weiterhin den Fehler der Freigabeverletzung erhalten. Zum Beispiel auf dem Desktop, wenn die SDF-Datei auf dem lokalen Rechner des Benutzers ist, können mehrere Prozesse/Verbindungen zu ihm hergestellt werden. Platzieren Sie diese SDF-Datei auf einer Netzwerkfreigabe, und das ist eine andere Geschichte. Nur 1 Prozess kann gleichzeitig darauf zugreifen. Ich frage mich, ob es die gleiche Situation beim Öffnen auf einem mobilen Gerät ist. – CBono

+2

Es ist gut dokumentiert, dass es auf einer Netzwerkfreigabe nicht funktioniert (http://www.pluralalsight.com/community/blogs/jimw/archive/2007/02/19/46151.aspx). Es funktioniert gut auf einem Gerät - ich habe ein paar Lösungen, die mehrere Prozesse erfordern, die die gleiche Datenbankdatei verwenden. – ctacke

0

SQLCE eröffnet 4 Community Technology Preview ist erschienen. Es unterstützt Multi-User-Szenarien und den Zugriff von mehreren Threads desselben Prozesses.

Es leidet nicht unter den gleichen Problemen wie SQlCE 3.5. Funktioniert gut bei 256 Verbindungen.

0

ref: http://msdn.microsoft.com/en-us/library/ms171750.aspx

// In SQL Server Compact können Sie mehrere Anwendungen gleichzeitig laufen , die verschiedene Arten von Daten zugreifen oder zu modifizieren.

Der Grund, warum viele Leute, die ich denke, bekommen die Irre geführt, da SQL CE unterstützen mehrere Verbindungen, die sie es für senarios verwenden gleichen Satz von Daten mit mehreren Verbindungen, die SQL Server CE-doesnt Unterstützung zu ändern.

Hoffe, das hilft!

Verwandte Themen