Я получил исключение при синхронизации базы данных в моем развернутом программном обеспечении.

Я разработал одно онлайн/оффлайн программное обеспечение, в котором использовал Microsoft sync framework 2.1. В этом приложении я создал индивидуальную настройку (используя класс установщика), чтобы я мог синхронизировать локальную базу данных перед ее использованием. В целях тестирования я установил это программное обеспечение на несколько систем, я успешно выполнил установку и синхронизацию на всех тестовых системах. Но когда я хочу синхронизировать базу данных с помощью установленного мной программного обеспечения, она успешно синхронизируется в некоторых системах и дает исключение в некоторых системах. Я использовал ту же логику для синхронизации в классе установщика и в своем приложении. Вот мой код синхронизации.

SqlConnection serverConn = new SqlConnection(DataAccess.SqlServerCon);
SqlConnection clientConn = new SqlConnection(DataAccess.SqlCon);
serverConn.Open();
clientConn.Open();
SyncOrchestrator syncOrchestrator = new SyncOrchestrator();

// Create provider for SQL Server
SqlSyncProvider serverProvider = new SqlSyncProvider("Scope1", serverConn);

// Set the command timeout and maximum transaction size for the SQL 
SqlSyncProvider clientProvider = new SqlSyncProvider("Scope1", clientConn);

// Set Local provider of SyncOrchestrator to the server provider
syncOrchestrator.LocalProvider = serverProvider;
serverProvider.ObjectSchema = ".dbo";
// Set Remote provider of SyncOrchestrator to the client provider
syncOrchestrator.RemoteProvider = clientProvider;

// Set the direction of SyncOrchestrator session to Upload and Download
syncOrchestrator.Direction = SyncDirectionOrder.UploadAndDownload;
try
{
   // Create SyncOperations Statistics Object
   SyncOperationStatistics syncStats = syncOrchestrator.Synchronize();

   // Display the Statistics
   MessageBox.Show("Start Time: " + syncStats.SyncStartTime);
   MessageBox.Show("Total Changes Uploaded: " + syncStats.UploadChangesTotal);
   MessageBox.Show("Total Changes Downloaded: " + syncStats.DownloadChangesTotal);
   MessageBox.Show("Complete Time: " + syncStats.SyncEndTime);
 }
 catch (Exception ex)
 {
      MessageBox.Show(ex.Message);
 }
  serverConn.Close();
  serverConn.Dispose();
  clientConn.Close();
  clientConn.Dispose();

Я получаю эту ошибку в строке SyncOperationStatistics syncStats = syncOrchestrator.Synchronize();

Я получаю сообщение об ошибке, показанное на рис. ниже. введите здесь описание изображения


person Mohini Mhetre    schedule 08.05.2014    source источник
comment
Убедились ли вы в правильности синтаксиса команды и проверили ли вы внутреннее исключение на наличие ошибок, связанных с конкретным магазином?   -  person Tim    schedule 08.05.2014
comment
syncOrchestrator.Synchronize(); это библиотечная функция, в которой произошло исключение, поэтому я не могу проверить здесь синтаксис команды. но при установке этот код работает отлично.   -  person Mohini Mhetre    schedule 08.05.2014


Ответы (1)


Я получил его ответ. В Windows 7 нам нужно изменить настройки безопасности нашей папки установки. Нам нужно дать полный контроль пользователю, чтобы база данных не была доступна только для чтения. Это исключение произошло из-за того, что моя локальная база данных была доступна только для чтения для пользователя, а синхронизация установки выполняется системой, а системная база данных не доступна только для чтения.

person Mohini Mhetre    schedule 08.05.2014