Probleme connection RDA [Résolu]

braxivamov 22 Messages postés mercredi 10 janvier 2007Date d'inscription 11 août 2009 Dernière intervention - 4 avril 2008 à 01:54 - Dernière réponse : braxivamov 22 Messages postés mercredi 10 janvier 2007Date d'inscription 11 août 2009 Dernière intervention
- 7 avril 2008 à 22:32
Bonjour,
je cherche a mettre en place une application pour envoyer/recuperer des donnees entre un serveur et un pocket pc.
Apres recherches la solution de RDA me parait tres interessante.
J'ai donc mis en place une machine avec IIS 6.0, sql server 2005, sql mobile edition 2005, et lancer l'assistant de synchronisation web de sql mobile edition. Mon repertoire virtuel contenant l'agent server est creer, et quand je tappe l'adresse de cet agent dans un navigateur internet de mon pocket le message "SQL Server Mobile Sever Agent 3.0" s'affiche bien.
J'ai donc commencer a dev mon application avec Visual Studio 2005 SP1 et bien verifier que l'agent client est present sur mon pocket (Windows\sqlceca30.dll).

Voici mon code :
System.Data.SqlServerCe.SqlCeConnection cnx = null;
            System.Data.SqlServerCe.SqlCeRemoteDataAccess rda = null;
            System.Data.SqlServerCe.SqlCeEngine engine = null;

            string connectionLocale = @"Data Source=\My Documents\Test.sdf";
            string connectionDistante = @"Provider=sqloledb; Data Source=XX.X.XX.4X; Initial Catalog=Test; User Id=xxxxxx;Password=xxxxxxxxx";

            try
            {
                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 = new System.Data.SqlServerCe.SqlCeRemoteDataAccess();

                 rda.InternetLogin = "xxxxxx";
                 rda.InternetPassword = "";
                 rda.InternetUrl = "http://XX.X.XX.XX/sync/sqlcesa30.dll";
                 rda.LocalConnectionString = connectionLocale;
                 rda.Pull("Personne", "SELECT * FROM Personne", connectionDistante,System.Data.SqlServerCe.RdaTrackOption.TrackingOnWithIndexes, "ErrorTable"););
             }
            catch (System.Data.SqlServerCe.SqlCeException ex)
            {

              foreach (System.Data.SqlServerCe.SqlCeError sqlError in ex.Errors)
               {
                   //System.Data.SqlServerCe.SqlCeException
                    MessageBox.Show("Message : " + sqlError.Message + " \nSource: " + sqlError.Source + " \nNative : " + sqlError.NativeError + " \nHR : " + sqlError.HResult);
                    MessageBox.Show(sqlError.Message, "Erreur");

                }
                MessageBox.Show(ex.Message, "Erreur");
            }
            catch (Exception exc)
            {
                MessageBox.Show("Erreur de @##@ "+exc.Message, "Erreur");
            }
            finally
            {
                rda.Dispose();
            }
       
        }

Niveau creation de la base de donnee locale tout va bien, mais lorsque j'arrive sur rda.Pull rien ne va plus ....
Voici le message d'erreur :
Message :
Source : Microsoft SQL Server 2005 Mobile Edition
Native : 28011
HResult : -2147024809

Message tres explicite ...

Si quelqu'un a une idee, une piste, une solution ?!!!

Le code me parait bon, je cehrche du cote authentification sql server mais ca l'air correct, enfin je suis un peu perdu la

++
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
braxivamov 22 Messages postés mercredi 10 janvier 2007Date d'inscription 11 août 2009 Dernière intervention - 7 avril 2008 à 22:32
3
Merci
Bon après moult recherche, le problème est semble t il identifié.
Dans mon cas il fallait aller dans la fonfiguration de de surface de sql server et ajouter le port 1433 dans IpAll, qui est cené être le port par défaut mais qui en fait ne l'est pas pour toutes les versions.
Petit conseil pour tous ceux qui veulent mettre en place de la RDA avec des configs pas tout à fait pareil que celles de msdn :
Tapper vous toutes les docs, en partant de sql server, en passant par sql ce et le très utile site : www.connectionstrings.com
car il y a plein de petits détails de conf a règler par ci par là, encore pire quand on est pas très famillier de l'environnement Win.
Merci pour votre aide

++

Merci braxivamov 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de braxivamov
braxivamov 22 Messages postés mercredi 10 janvier 2007Date d'inscription 11 août 2009 Dernière intervention - 4 avril 2008 à 23:00
0
Merci
Re

Apres avoir farfouiller partout et fait quelques modifs il y a du changement.
Maintenant je ne me tappe plus un message d'erreur vide \o/

Voici le nouveau :

"[il me rebalance mon string connectionDistante]
Une opération OLE-DB en plusieurs étapes (bouh la faute MS) à généré des erreurs.
Vérifiez chaque valeur d'état OLE-DB disponible.
Aucun travail n'a été effectué."

Cette erreur est générée lors de l'exécution de la fonction Pull()

++
Commenter la réponse de braxivamov

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.