У меня установлен блок 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 или неверный пароль.
Это сообщение об ошибке не очень понятно для меня, и мне не хватает мест, чтобы искать причину этого. Есть идеи?