0

저는 Microsoft Sync Framework 2.1을 사용하여 데이터베이스와 디렉터리를 동기화하는 동기화 소프트웨어를 개발했습니다. 잠시 응용 프로그램을 사용하여 클라이언트 후 Microsoft.Sync를 사용하여 "Storage Engine Operation Failed"를 해결하는 방법?

이 오류를 가져옵니다

스토리지 엔진 작동 오류 코드로 실패 25104 (HRESULT = 0X80004005, 소스 IID = {0C733A63-2A1C-11CE-ADE5-00AA0044773D} , 매개 변수 = (4001, 0, 0,,,,)).

내 코드에서 오류를 추적하려했지만 성공하지 못했습니다.

SyncOchestrator가 동기화를 시작할 때 오류가 발생합니다. 그리고 스택 트레이스에서 내가 가지고 : Microsoft.Synchronization.Files.FileSyncProvider ... ctor에()

다음

내 코드의 일부이다에서 ​​

: 당신 수

try 
     { 
      // Set options for the sync operation 
      FileSyncOptions options = FileSyncOptions.ExplicitDetectChanges | 
        FileSyncOptions.RecycleDeletedFiles | FileSyncOptions.RecyclePreviousFileOnUpdates | FileSyncOptions.RecycleConflictLoserFiles; 

      FileSyncScopeFilter filter = new FileSyncScopeFilter(); 
      filter.FileNameExcludes.Add("*.lnk"); // Exclude all *.lnk files 
      filter.FileNameExcludes.Add("*.mdf"); // Exclude all *.mdf files 
      filter.FileNameExcludes.Add("*.ldf"); // Exclude all *.ldf files 
      filter.FileNameExcludes.Add("*.MDF"); // Exclude all *.MDF files 
      filter.FileNameExcludes.Add("*.LDF"); // Exclude all *.LDF files 
      filter.FileNameExcludes.Add("*.tdms_index"); // Exclude all *.tdms_index files 

      Thread.Sleep(50); 
      // Synchronization of 2 Folders 
      FileSyncProvider providerA = new FileSyncProvider(Guid.NewGuid(), replica1RootPath, filter, options); 
      FileSyncProvider providerB = new FileSyncProvider(Guid.NewGuid(), replica2RootPath, filter, options); 
      providerA.DetectChanges(); 
      providerB.DetectChanges(); 

      Thread.Sleep(50); 
      SyncOrchestrator agent = new SyncOrchestrator(); 
      agent.LocalProvider = providerA; 
      agent.RemoteProvider = providerB; 
      agent.Direction = SyncDirectionOrder.Upload; 
      MessageBox.Show("Let's SYNC"); 
      agent.Synchronize(); // The error happens here 

      Thread.Sleep(50); 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show(e.Message); 
      MessageBox.Show(e.StackTrace); 
     } 

주세요 이걸 도와 줘? 나는 좌절감을 느끼고 있으며 어디에서 봐야할지 모르겠다! 이 코드는 1 년 동안 완벽하게 작동했습니다. 자세한 내용은

:

  • 최종 사용자가 폴더에 필요한 모든 액세스 권한을 갖습니다.
  • 파일 서버에 쓸 여유 공간이 충분합니다. 나는 C#을에있어

, Microsoft.Synchronization 2.1, 닷넷 4, 비주얼 스튜디오는

2015 년은 어떤 제안 주셔서 대단히 감사합니다.

답변

0

나는 결국 해결책을 찾아 냈다. 메타 데이터 파일이 너무 크거나 손상되었습니다. 그래서 내 문제를 해결하기 위해 동기화를 단편화하고 260 개의 파일 이동으로 하나의 폴더 만 선택하는 대신 모든 하위 폴더를 하나씩 선택했습니다.

foreach (string dep in Directory.GetDirectories(plantFolder1)) // different departements 
          { 
           string depFolder1 = plantFolder1 + dep.Remove(0, plantFolder1.Length); 
           string depFolder2 = depFolder1.Replace(subReplica1, subReplica2); ; 

           Thread.Sleep(50); 
           // Synchronization of 2 Folders 
           FileSyncProvider providerA = new FileSyncProvider(Guid.NewGuid(), depFolder1, filter, options); 

           bool exists = Directory.Exists(depFolder2); 
           if (!exists) 
            Directory.CreateDirectory(depFolder2); 

           FileSyncProvider providerB = new FileSyncProvider(Guid.NewGuid(), depFolder2, filter, options); 
           providerA.DetectChanges(); 
           providerB.DetectChanges(); 

           Thread.Sleep(50); 
           SyncOrchestrator agent = new SyncOrchestrator(); 
           agent.LocalProvider = providerA; 
           agent.RemoteProvider = providerB; 
           agent.Direction = SyncDirectionOrder.Upload; 
           agent.Synchronize(); 
           Thread.Sleep(50); 
          } 

그건 내 문제에 대한 해결책입니다. 이게 너에게 도움이되기를 바랍니다.

감사합니다.