2009-06-02 5 views
1

Je tente d'accéder à une base de données Sql CE 2005 sur un appareil Windows Mobile à partir de deux applications différentes.Sql ce 3.0 Multi-utilisateur de base de données

D'après les informations que je trouve en ligne, il devrait fonctionner, mais quand j'ouvre la deuxième connexion j'obtenir une erreur de violation de partage de fichiers

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

Toutes les idées sur ce que je fais mal ??

+0

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

Répondre

3

Le problème était la chaîne de connexion .....

"Data Source=\\\Program Files\xx\DB.sdf" ouvre apparemment la base de données comme un seul utilisateur

utilisant

"Data Source=Program Files\xx\DB.sdf" ouvre la base de données normalement ...

0

Est-ce le même processus utilise plusieurs threads pour accéder à ce fichier sdf, ou à un seul thread. Quand il est dit qu'un autre "PROCESSUS" accède au fichier, qu'est-ce que c'est? Est-ce VS, ou quelque chose d'autre. Je pense que vous pouvez utiliser la visionneuse de processus à distance pour voir quels processus de l'appareil utilisent ce fichier SDF. Si vous pouviez voir séparément quelles poignées sont pour quels processus dans un périphérique, ce serait génial. Même sinon, essayez simplement de supprimer le fichier sdf (ou déplacez/renommez-le), après avoir tué certains processus sur le bureau. Cela pourrait vous dire quel est le processus incriminé.

+0

Non, ils sont deux applications distinctes. Les deux essayent d'ouvrir la même base de données. Un ouvre la connexion et lorsque le second essaie de l'ouvrir, il donne l'erreur de violation de partage de fichiers. Im utilisant cette chaîne de connexion pour se connecter. conn = new SqlCeConnection ("Source de données = \\\ Program Files \ xx \ DB.sdf"); – Marcom

3

SQL Compact does support multiple connections to the database, even back with version 3.0. Comment le premier processus ouvre-t-il la base de données? Par exemple, l'analyseur de requêtes mobile de 3.0 et 3.1 a ouvert la base de données exclusivement, la verrouillant effectivement à partir de tout autre processus.

+0

les deux applications utilisent la même chaîne de connexion SqlCeConnection conn = new SqlCeConnection ("Source de données = \\\ Program Files \ xx \ DB.sdf"); conn.Open(); la première application qui ouvre les problèmes db withtout. le second jette l'erreur. – Marcom

+0

Je peux vous dire que dans certains cas, il n'est pas important que SQL CE supporte plusieurs connexions. Vous pouvez toujours obtenir l'erreur de violation de partage. Par exemple, sur le bureau si le fichier SDF se trouve sur la machine locale de l'utilisateur, plusieurs processus/connexions peuvent y être effectués. Placez ce fichier SDF sur un partage réseau, et c'est une histoire différente. Un seul processus peut y accéder à la fois. Je me demande si c'est la même situation lors de l'ouverture sur un appareil mobile. – CBono

+2

Il est bien documenté qu'il ne fonctionnera pas sur un partage réseau (http://www.pluralsight.com/community/blogs/jimw/archive/2007/02/19/46151.aspx). Cela fonctionne très bien sur un périphérique - j'ai quelques solutions qui nécessitent plusieurs processus utilisant le même fichier de base de données. – ctacke

0

SQLCE 4 Community Technology Preview est sorti. Il prend en charge le scénario multi-utilisateur et l'accès à partir de plusieurs threads du même processus.

Il ne souffre pas des mêmes problèmes que SQlCE 3.5. Fonctionne bien sur 256 connexions.

0

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

// Dans SQL Server Compact, vous pouvez exécuter plusieurs applications simultanées qui accèdent ou modifier différents ensembles de données.

La raison pour laquelle beaucoup de gens s'induits en erreur je pense est depuis soutien de cé sql multiples connexions qu'ils utilisent pour senarios modifier même ensemble de données avec de multiples connexions qui serveur SQL de support CE ne marche pas.

Espérons que cela aide!

Questions connexes