begin process at 2008 08 29 04:56:08
1 233 502 membres
43 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : RemoteDataAccess C# Pull() [ Réseau & Internet / Internet ] (braxivamov)

RemoteDataAccess C# Pull() le 08/04/2008 23:57:24

braxivamov
Bonjour,
J'ai mis en place une architecture RDA avec sql server 2005 et sql server ce (avec IIS bien sur)
Donc tout est en place et les fonctions Pull(), Push() et SubmitSql() marchent tres bien.
Par contre, d'apres la doc avant de refaire un pull, il faut supprimer la table que l'on veut importer du pocket pc.
Donc j'ai mis cela en place dans mon code, mais lorsque je lance une deuxieme fois mon code, la suppression de la table marche tres bien mais une erreur est generee lors de l'execution du Pull(), dont voici le message :

Message : [MyErrorLog]
Source : Microsoft SQL Server 2005 Mobile Edition
Native : 28753
HResult : -2147467259

Voila les bouts de code utilises :

if (!System.IO.File.Exists("\\My Documents\\Test.sdf"))
                {
                    engine = new System.Data.SqlServerCe.SqlCeEngine(connectionLocale);
                    engine.CreateDatabase();
                    engine.Dispose(); 
                }
                else
                {
                        cnx = new System.Data.SqlServerCe.SqlCeConnection(connectionLocale);
                        cnx.Open();
                        System.Data.SqlServerCe.SqlCeCommand cmd = cnx.CreateCommand();
                        cmd.CommandText = "DROP TABLE Personne";
                        cmd.ExecuteNonQuery();

                 if (cnx.State != ConnectionState.Closed) cnx.Close();

                }

rda.Pull("Personne", sqlCmd, connectionDistante, RdaTrackOption.TrackingOnWithIndexes, "MyErrorLog");

Donc une erreure sera liee a ma table d'erreur.
Ma premiere interrogation porte sur la presence de cette table :
"Si une erreur se produit lorsque l'application appelle la méthode Push, SQL Server Compact Edition crée la table d'erreurs et y ajoute un enregistrement" (source : http://msdn2.microsoft.com/fr-fr/library/ms174551.aspx)
Si je comprend bien cette phrase, la table "MyErrorLog" est cree si une erreur survient lors d'un Push(), donc pourquoi est elle cree lors du Pull() ? (j'ai peut etre mal compris)

Ensuite j'ai essaye de ne pas mettre le parametre MyErrorLog dans la fonction Pull(), mais cette fois ci lors de la seconde execution du programme c'est une table sysTrackedObject qui pose probleme ( Une des 4 tables creees automatiquement lors du Pull).
Donc d'apres mes docs et ma logique il faudrait qu'en plus de la table a Pull, supprimer les 4 tables sys ainsi que la table d'erreur.
J'ai de ce fait rajouter 5 drop table dans le "else" mais je n'ai pas le droit de supprimer ces tables ...
Donc leur presence  bloque tous les Pull a partir de la deuxieme execution et on ne peut les supprimer ....
Et malheureusement pour mon appli je ne peux me passer du TrackingOn du Pull qui creer ces tables ...
J'ai deja beaucoup cherche et ma structure de code correspond trait pour trait a tous les exemples, tutos que j'ai trouve ...

Je suis prenneur de toute idee =)

++

Re : RemoteDataAccess C# Pull() le 09/04/2008 22:46:17

braxivamov
Apparement le probleme viendrais des tables sys creees avec trackingonwithindexes.
Dans la table __sysTrackedObject il reste des traces de la table Personne qui est droppee a la deuxieme execution, donc d'apres ce que je pense, lorsque l'appli veut pull elle check cette table sys et voit un enregistrement du nom de la table et croit qu'elle n'est pas droppee donc genere une erreur.

Si quelqu'un voit ce que j'ai oublie pour effacer ces lignes de la table sys en meme temps que la table ...

++

Re : RemoteDataAccess C# Pull() le 10/04/2008 02:58:27

braxivamov
Réponse acceptée !
Bon apres moult recherche dans les entrailles de tous mes composants l'erreur est identifiee ....

Il suffit de deployer l'application dans le repertoire Windows du pocket la ou se trouve l'agent sql et tout est regle ...

++


Classé sous : table, erreur, sql, cnx, pull

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS