如何重新初始化订阅(以编程方式)

本主题将介绍如何通过使用 SqlCeReplication 类重新初始化对 Microsoft SQL Server Compact 3.5 的订阅。有关使用 SqlServerCe 命名空间的详细信息,请参阅 SqlServerCe 命名空间参考文档。

重新初始化订阅

  1. 初始化 SqlCeReplication 对象。

    SqlCeReplication repl = new SqlCeReplication();
    
  2. 设置连接属性。这些属性指定所订阅发布的名称和位置、本地 SQL Server Compact 3.5 数据库的名称和位置以及 SQL Server Compact 3.5 服务器代理的位置。

    repl.InternetUrl = "https://www.adventure-works.com/sqlmobile/sqlcesa35.dll";
    repl.InternetLogin = "MyInternetLogin";
    repl.InternetPassword = "<password>";
    repl.Publisher = "MyPublisher";
    repl.PublisherDatabase = "MyPublisherDatabase";
    repl.PublisherLogin = "MyPublisherLogin";
    repl.PublisherPassword = "<password>";
    repl.Publication = "MyPublication";
    repl.Subscriber = "MySubscriber";
    repl.SubscriberConnectionString = "Data Source=MyDatabase.sdf";
    
  3. 调用 ReinitializeSubscription 方法来标记要重新初始化的订阅。如果将 true 传递给 ReinitializeSubscription 方法,在重新初始化之前订阅服务器上的更改将上载到发布服务器上。如果传递的是 false,在重新初始化过程中将放弃订阅服务器上的所有更改。

    repl.ReinitializeSubscription(true);
    
  4. 若要重新填充订阅,您必须在调用 ReinitializeSubscription 方法后调用 Synchronize 方法。

    repl.Synchronize();
    

示例

下面的示例显示如何重新初始化 SQL Server Compact 3.5 订阅。在本例中,订阅服务器上的所有更改先上载到发布服务器,然后重新初始化订阅,再同步数据。

SqlCeReplication repl = null;

try
{
   // Create SqlCeReplication instance
   //
   repl = new SqlCeReplication();
   repl.InternetUrl = "https://www.adventure-works.com/sqlmobile/sqlcesa35.dll";
   repl.InternetLogin = "MyInternetLogin";
   repl.InternetPassword = "<password>";
   repl.Publisher = "MyPublisher";
   repl.PublisherDatabase = "MyPublisherDatabase";
   repl.PublisherLogin = "MyPublisherLogin";
   repl.PublisherPassword = "<password>";
   repl.Publication = "MyPublication";
   repl.Subscriber = "MySubscriber";
   repl.SubscriberConnectionString = "Data Source=MyDatabase.sdf";

   // Mark the subscription for reinitialization with Upload first
  
   repl.ReinitializeSubscription(true);

   // Synchronize to SQL Server to populate the Subscription 

   repl.Synchronize();
}
catch (SqlCeException)
{
   // Handle errors here
}
finally
{
   // Dispose the repl object
   
   repl.Dispose();
}
Dim repl As SqlCeReplication = Nothing

Try
   ' Create SqlCeReplication instance

   repl = New SqlCeReplication()
   repl.InternetUrl = "https://www.adventure-works.com/sqlmobile/sqlcesa35.dll"
   repl.InternetLogin = "MyInternetLogin"
   repl.InternetPassword = "<password>"
   repl.Publisher = "MyPublisher"
   repl.PublisherDatabase = "MyPublisherDatabase"
   repl.PublisherLogin = "MyPublisherLogin"
   repl.PublisherPassword = "<password>"
   repl.Publication = "MyPublication"
   repl.Subscriber = "MySubscriber"
   repl.SubscriberConnectionString = "Data Source=MyDatabase.sdf"

   ' Mark the subscription for reinitialization with Upload first
            
   repl.ReinitializeSubscription(True)

   ' Synchronize to SQL Server to populate the Subscription 

   repl.Synchronize()
Catch
   ' Handle errors here
Finally
   ' Dispose the repl object
   
   repl.Dispose()
End Try

请参阅

其他资源

使用合并复制

订阅发布 (SQL Server Compact)

重新初始化订阅 (SQL Server Compact)