[RESOLU] Merge Replication SQL Server CE / SQL Server 2005

Ce forum est dédié à la mise en oeuvre de SQL Serveur CE

Modérateur: webmaster

[RESOLU] Merge Replication SQL Server CE / SQL Server 2005

Messagepar ymerej » Mercredi 18 Avril 2007, 14:28

Bonjour,

j'ai mis en place une réplication de fusion (merge replication) entre SQL Server Mobile et SQL Server 2005.

Je n'ai pas de PocketPC à ma disposition alors j'utilise l'émulateur "Windows Mobile 5.0 Pocket PC Emulator" de VS2005.

J'ai tout bien configuré le :

-serveur de publication
-serveur web IIS
-serveur de distribution (contenant agent server SQL)
-code côté client

comme indiqué dans la MSDN -> http://msdn2.microsoft.com/en-us/library/aa454892.aspx

Code: Tout sélectionner

repl = new SqlCeReplication();

repl.InternetUrl = "http://PC489/ContactsMobile/sqlcesa30.dll";
repl.Publisher = "PC489";
repl.PublisherDatabase = "Contacts";
repl.PublisherSecurityMode = SecurityType.NTAuthentication;
repl.Publication = "ContactsMobile";
repl.Subscriber = "ContactsMobile";
repl.SubscriberConnectionString = "Data source='Contacts.sdf'";

repl.AddSubscription(AddOption.CreateDatabase);

repl.Synchronize();



Pourtant, j'ai une exception qui est lancée. Mais malheureusement, aucun message pour m'aider (il est vide !!!!).

Alors j'ai installé le Microsoft SQL Server 2005 Compact Edition Tools for Visual Studio 2005 qui permet d'utiliser SQL Server Mobile dans une appli Windows traditionnelle.

J'ai la même exception qui est lancée mais ce coup-ci j'ai un message : "Echec de l'authentification sur l'ordinateur qui execute les services Internet (IIS)".

C'est donc apparement un probleme de login/password pourtant j'ai bien autorisé le USER IUSR à se connecter donc je n'ai pas de login/password à indiquer c'est bien çà ?

Sinon, j'ai essayé de créer un utilisateur Windows USER_REP avec un mot de passe, je l'ai autorisé à se connecter dans IIS et à ma publication et çà ne marche toujours pas !!!!

J'ai rajouté les lignes suivantes :

Code: Tout sélectionner
repl.InternetLogin = "USER_REP";
repl.InternetPassword = "123456789";
repl.PublisherLogin = "USER_REP";
repl.PublisherPassword = "123456789";


Quelqu'un a t'il une idée ??? J'espere avoir été le plus clair possible...sinon n'hesitez pas à me poser des questions...

Question : pour le Suscriber on peut bien mettre ce que l'on veut ?

PS : le serveur IIS, la base SQL Server 2005 et VS2005 tourne sur le même PC[/i][/code]
Dernière édition par ymerej le Mercredi 02 Mai 2007, 09:22, édité 1 fois.
ymerej
Membre actif
 
Messages: 23
Inscription: Lundi 16 Avril 2007, 11:08

Messagepar khelkun » Mercredi 18 Avril 2007, 14:52

Ah les droits, ça nous fera toujours ....

Perso j'essaierai d'attaquer le IIS sur un web service de test depuis le pda client. Comme ça tu verras si le problème est plus lié la connexion du composant de replic ou si c'est vraiment un problème de configuration du serveur IIS.

C'est pas ce que j'appelerais un conseil en or, mais si ça peut t'aider ... Sinon fait quelques recherche sur le forum, je crois que tu n'es pas le seul à avoir galéré avec les droits sur de la réplication.

Sinon j'aime assez aussi les SQlCeException avec un message vide, ça m'arrive aussi de temps de temps :lol:
Pas sûr mais il se pourrait que les exceptions vides que j'ai rencontrées étaient en fait des exceptions contenant des innerexception, du coup je te conseillerai de faire boucler ta fonction de log sur la propriété innerexception de tes Exceptions.

KOWABOUNGA ! Bonne chance
khelkun
Membre très actif
 
Messages: 635
Inscription: Jeudi 15 Février 2007, 01:17

Messagepar ymerej » Mercredi 18 Avril 2007, 16:06

Merci pour ton aide "khelkun"

1/ Petite indication :

Via Internet Explorer sur le Pocket PC (enfin l'emulateur), j'arrive à accèder à l'URL du SQL Server Agent : http://PC489/ContactsMobile/sqlcesa30.dll

Je ne me fais pas rejeter et je vois bien afficher sur la page : SQL Server Mobile Server Agent 3.0

Cela veut bien dire que l'accès anonyme (et donc sans indiquer de login/password) au serveur IIS se fait sans problème non ?


2/ J'ai essayé le coup des InnerException et malheuerusement çà donne rien car e.InnerException.Message plante :wink:
ymerej
Membre actif
 
Messages: 23
Inscription: Lundi 16 Avril 2007, 11:08

Messagepar khelkun » Mercredi 18 Avril 2007, 16:37

2/ J'ai essayé le coup des InnerException et malheuerusement çà donne rien car e.InnerException.Message plante


Loin de moi l'idée de t'apprendre à coder, mais tu n'oublierais pas de tester l'existence de l'innerException, du genre (en faisant cours) :
void logexception(Exception ex)
{
if(ex == null) return;
Exception innerex = ex;
do
{
writeToLogFile(ex.Message);
}
while((innerex = innerex.innerException) != null);
}


Sur ton test IIS je peux pas t'aider, moi et les infrastructure réseau on est pas super pote :roll:
khelkun
Membre très actif
 
Messages: 635
Inscription: Jeudi 15 Février 2007, 01:17

Messagepar ymerej » Mercredi 18 Avril 2007, 16:46

Non mais ce que j'veux dire c'est que l'InnerException est null donc que je teste ou pas çà change pas grand chose, yen a pas :wink:

Donc, si je fais une boucle comme tu m'as dit, et bien je ne rentre même pas dedans :wink:

Merci pour le p'tit cours de prog quand même lol
ymerej
Membre actif
 
Messages: 23
Inscription: Lundi 16 Avril 2007, 11:08

Messagepar khelkun » Mercredi 18 Avril 2007, 16:50

faut savoir : tu rentres pas dans la boucle ou ça plante :wink:

np
khelkun
Membre très actif
 
Messages: 635
Inscription: Jeudi 15 Février 2007, 01:17

Messagepar ymerej » Mercredi 18 Avril 2007, 18:14

Ca plante si je ne teste pas et si je teste et que je fais une boucle, je rentre jamais dedans donc il n'y a pas d'InnerException.


Sinon, j'ai fait une petite avancée. L'accès IIS semble fonctionner désormais car je n'ai plus la même erreur.

En fait, quand je disais que je faisais :

Code: Tout sélectionner
repl.Publisher = "PC489";


C'est pas vrai je faisais en réalité :


Code: Tout sélectionner
repl.Publisher = "192.168.0.7";


Autrement dit j'indiquais l'adresse IP et non le nom du PC et c'est pas bien !!!

Maintenant l'erreur que j'obtiens est une erreur interne à SQL Server 2005 :

Erreur interne : paramètre de réconciliateur incorrecte

Une idée ???
ymerej
Membre actif
 
Messages: 23
Inscription: Lundi 16 Avril 2007, 11:08

Messagepar khelkun » Jeudi 19 Avril 2007, 09:44

L'erreur viendrait du moteur SQL CE du PDA, j'te dirais c'est pas cool car si tu regardes sur le msdn, microsoft te conseille carément de joindre le support technique en cas d'erreur interne, car soit disant on serait pas assez bon pour résoudre le problème tout seul. Ca m'a bien fait marrer quand j'ai découvert ça. J'ai eu aussi des problèmes d'erreur interne mais pas sur de la réplication et je suppose que l'origine de ces erreurs venait du fait que j'étais très limite sur la RAM dispo, voire sur l'utilisation du temps CPU.

Au cas où ton pb viendrait du SQL server du PC. Mes connaissances sur SQL Server 2005 sont totales useless. Ceci pourrait t'aider :
http://www.microsoft.com/technet/prodte ... lictn.mspx

L'erreur interne en question sur la compact edition :
http://msdn2.microsoft.com/fr-fr/library/ms171748.aspx

ton erreur interne elle est renvoyée par le moteur SQLCE de ton PDA ?
khelkun
Membre très actif
 
Messages: 635
Inscription: Jeudi 15 Février 2007, 01:17

Messagepar ymerej » Jeudi 19 Avril 2007, 10:10

Merci beaucoup de ta réponse...

Par contre, je croyais que le réconciliateur était sur le serveur comme en témoigne l'architecture de réplication sur la page -> http://msdn2.microsoft.com/fr-fr/library/ms171927.aspx

Or tu me dis que le problème vient du SQL Server CE (donc sur le PDA)...c'est à rien n'y comprendre...j'vais regardé un peu tes 2 pages..

Merci :wink:
ymerej
Membre actif
 
Messages: 23
Inscription: Lundi 16 Avril 2007, 11:08

Messagepar khelkun » Jeudi 19 Avril 2007, 10:45

Le réconciliateur est en effet sur le serveur, mais l'exception que tu rencontres est bien renvoyée par SQL CE ? Autrement dit l'exception "erreur interne" est loggée par l'appli du PDA non ?
khelkun
Membre très actif
 
Messages: 635
Inscription: Jeudi 15 Février 2007, 01:17

Suivante

Retourner vers SQL Serveur CE

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron