2010-02-16 6 views
1

J'ai une boîte SQL Server 2005 mis en place pour la réplication de fusion à SQL Server CE 3.0. La publication, l'éditeur, le distributeur et IIS ont tous été mis en place.Erreur de réplication SQL Server

Dans ma demande, je tente de synchroniser les bases de données en utilisant le code suivant:

//TODO: Change for production 
//*************************** 
string localDBPath = @"C:\Documents and Settings\Robert\Desktop\MyDB.sdf"; 
//*************************** 

SqlCeReplication replicator = new SqlCeReplication(); 
replicator.InternetUrl = "http://myWebServer/sqlcesa30.dll"; 
replicator.Publisher = "mySqlServer"; 
replicator.PublisherDatabase = "myDatabase"; 
replicator.PublisherSecurityMode = SecurityType.NTAuthentication; 
replicator.Publication = "myPublication"; 
replicator.Subscriber = Dns.GetHostName(); 
replicator.SubscriberConnectionString = @"Data Source=" + localDBPath; 

try 
{ 
    // Check if the database file already exists 
    if (!System.IO.File.Exists(localDBPath)) 
    { 
     // Add a new subscription and create the local database file 
     replicator.AddSubscription(AddOption.CreateDatabase); 
    } 

    // Transfer the initial snapshot of data if this is the first time this is called. 
    // Subsequent calls will transfer only the changes to the data. 
    replicator.Synchronize(); 
} 
catch (SqlCeException ex) 
{ 
    // Display any errors in message box 
    MessageBox.Show(ex.Message); 
} 
finally 
{ 
    // Dispose of the SqlCeReplication object, but don't drop the subscription 
    replicator.Dispose(); 
} 

Malheureusement, ce code échoue à la ligne "replicator.Synchronize" avec le message d'erreur suivant:

Échec de la connexion à SQL Server avec les informations de connexion fournies. SQL Server n'existe pas, l'accès est refusé car l'utilisateur IIS n'est pas un utilisateur valide sur SQL Server ou le mot de passe est incorrect.

Ce message d'erreur est pas très clair pour moi et je suis à court d'endroits pour chercher la cause de cela. Des idées?

Répondre

1

Assurez-vous que le compte d'agent est le même utilisateur et le même mot de passe sur toutes les cases.

Assurez-vous que vous appelez les bonnes instances.

Assurez-vous que l'agent est démarré sur toutes les machines impliquées.

Vérifiez les journaux d'événements sql sur tous les serveurs et voyez qui génère l'erreur, cela peut également réduire le problème.

Vous pouvez également vérifier pour vous assurer d'avoir bien configuré:

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

Même problème ici, il a dû ajouter correctement le nom de l'instance:

http://bytes.com/topic/sql-server/answers/611761-merge-replication-error-failure-connect-sql-server-provided-connection

Vérifiez-les aussi:

http://support.microsoft.com/kb/314783

http://support.microsoft.com/kb/319723

http://msdn2.microsoft.com/en-us/library/ms172357.aspx

, contrôler que les cas vous avez raison: repl.Publisher = "macnine nom \ nom_instance"

Vous pouvez également jeter un oeil à travers ce blog:

http://blogs.msdn.com/sql_protocols/archive/2005/09/28/474698.aspx

0

le message provient de votre plug-in de réplication IIS: // myWebServer/sqlcesa30.dll. Lorsqu'il tente de se connecter à l'éditeur, il ne peut pas le trouver. L'éditeur s'appelle 'mySqlServer', mais apparemment il ne peut pas être atteint par myWebServer. Cela peut être un problème de nom (une faute de frappe), un problème de pare-feu (port SQL bloqué), un problème IPSEC, un problème de configuration (SQL n'écoute pas pour les connexions distantes) et ainsi de suite. Suivez les étapes de dépannage de la connectivité SQL Server normales entre myWeServer et mySqlServer.

Questions connexes