在我部署的软件中同步数据库时,我遇到了异常

时间:2014-05-08 06:32:34

标签: c# wpf synchronization setup-deployment microsoft-sync-framework

我开发了一个在线/离线软件,其中我使用了Microsoft同步框架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();

收到此错误

我收到此错误,如下图enter image description here

所示

1 个答案:

答案 0 :(得分:0)

我得到了答案。在Windows 7中,我们需要更改安装文件夹的安全设置。我们需要完全控制用户,以便数据库不是只读的。发生该异常是因为我的本地数据库对用户是只读的,而安装同步是由系统完成的,而系统数据库不是只读的。