2010-02-16 5 views
1

У меня есть окно SQL Server 2005, настроенное для репликации слияния в SQL Server CE 3.0. Публикация, издатель, дистрибьютор и IIS созданы.Ошибка репликации SQL Server

В моем приложении я пытаюсь синхронизировать базы данных, используя следующий код:

//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(); 
} 

К сожалению, этот код не в строке «replicator.Synchronize» со следующим сообщением об ошибке:

Невозможность подключения к SQL Server с предоставленной информацией о подключении. SQL Server не существует, доступ запрещен, поскольку пользователь IIS не является допустимым пользователем на SQL Server, или пароль неверен.

Это сообщение об ошибке не очень ясно для меня, и у меня заканчиваются места, чтобы найти причину этого. Есть идеи?

ответ

1

Убедитесь, что учетная запись агента - это один и тот же пользователь и пароль для всех ящиков.

Убедитесь, что вы вызываете правильные экземпляры.

Убедитесь, что агент запущен на всех задействованных машинах.

Проверьте журналы событий sql на всех серверах и посмотрите, какая ошибка, это также может уменьшить проблему.

Вы также можете проверить это, чтобы убедиться, что вы настроили правильно:

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

Тот же вопрос, здесь он должен был правильно добавить имя экземпляра:

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

Проверить их также:

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

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

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

снова убедитесь, что вы случаи являются правильными: repl.Publisher = "имя-macnine \ имя-экземпляра"

Вы также можете взглянуть через этот блог:

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

0

сообщение приходит из вашего плагина репликации IIS: // MyWebServer/sqlcesa30.dll. Когда он пытается подключиться к издателю, он не может его найти. Издатель назван «mySqlServer», но, по-видимому, он не может быть достигнут myWebServer. Это может быть проблема с именем (опечатка), проблема межсетевого экрана (блокировка SQL-порта), проблема IPSEC, проблема с конфигурацией (SQL не прослушивает удаленные подключения) и так далее. Следуйте обычным процедурам устранения неполадок подключения к SQL Server между myWeServer и mySqlServer.

Смежные вопросы