Probleme connection RDA

Résolu
braxivamov Messages postés 22 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 11 août 2009 - 4 avril 2008 à 01:54
braxivamov Messages postés 22 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 11 août 2009 - 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

++

2 réponses

braxivamov Messages postés 22 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 11 août 2009
7 avril 2008 à 22:32
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

++
3
braxivamov Messages postés 22 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 11 août 2009
4 avril 2008 à 23:00
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()

++
0
Rejoignez-nous