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

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

重新初始化订阅

  1. 初始化 SqlCeReplication 对象。

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

    repl.InternetUrl = "https://www.adventure-works.com/sqlmobile/sqlcesa30.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 Edition 订阅。在本例中,订阅服务器上的所有更改先上载到发布服务器,然后重新初始化订阅,再同步数据。

SqlCeReplication repl = null;

try
{
   // Create SqlCeReplication instance
   //
   repl = new SqlCeReplication();
   repl.InternetUrl = "https://www.adventure-works.com/sqlmobile/sqlcesa30.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/sqlcesa30.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 Edition)
重新初始化订阅 (SQL Server Compact Edition)

帮助和信息

获取 SQL Server Compact Edition 帮助