Ошибка репликации SQL Server - PullRequest
       13

Ошибка репликации SQL Server

1 голос
/ 16 февраля 2010

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

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

//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 или неверный пароль.

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

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

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

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

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

Проверьте журналы событий 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-name \ instance-name"

Вы также можете просмотреть этот блог:

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

0 голосов
/ 16 февраля 2010

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

...