创建订阅

创建订阅之前,必须配置 Microsoft SQL Server 复制,创建 SQL Server 发布并配置 Microsoft Internet 信息服务 (IIS)。有关此过程的信息,请参阅实现复制 (SQL Server Compact)配置 Web 同步向导帮助

创建发布并正确配置 IIS 之后,您可以使用下列方法之一创建 SQL Server Compact 3.5 (SQL Server Compact 3.5) 订阅:

调用 AddSubscription 方法

SQL Server Compact 3.5 应用程序使用 Replication 对象以编程方式创建订阅,并将该订阅下载到 Microsoft 智能设备上的 SQL Server Compact 3.5 数据库中。该应用程序通过创建 Replication 对象,设置相应的 Replication 对象属性,然后调用 AddSubscription 方法来完成上述过程。本主题中的示例为您演示了相关操作步骤。

多个订阅和 AddSubscription 方法

由于 SQL Server Compact 3.5 支持将一个数据库与多个发布同步,因此,当您使用 AddSubscription 方法时,必须考虑多个订阅的影响。

在调用 AddSubscription 方法时,可使用两个选项:CreateDatabaseExistingDatabase。使用多个订阅时,CreateDatabase 选项不会受影响,但 ExistingDatabase 选项则会受影响。使用 ExistingDatabase 时,您必须为 PublisherPublicationPublisherDatabase 属性提供值,然后才能调用 AddSubscription 方法。

复制现有订阅

通过将现有订阅从一个智能设备复制到另一个上,您可以创建一个新订阅。如果所有订阅服务器都使用相同的发布,则很容易通过这种方式将智能设备应用程序部署到多个设备上。

您可以在一个智能设备上创建初始订阅,然后通过将该应用程序和初始订阅复制到任意多的设备上来部署该应用程序。在应用程序首次进行同步时,由于该新设备和/或物理文件夹位置改变,SQL Server Compact 3.5 会自动将其识别为新的订阅服务器,并创建一个新订阅。通过将初始订阅复制到一个设备上,您就不用通过网络将初始订阅下载到该设备上。

备注

SQL Server Compact 3.5 支持外接存储设备,包括 Compact Flash 内存和驱动器。部署大型 SQL Server Compact 3.5 数据库的高效方式是将它们分布在这类存储设备上。但是,与智能设备的 RAM 相比,这类存储设备所需的访问时间相对较长。使用这类设备可能会影响应用程序的性能。

Visual C++ for Devices

   ISSCEMerge      *pISSCEMerge = NULL;
   ISSCEErrors     *pISSCEErrors = NULL;
   HRESULT         hr;
   BSTR            bstr = NULL;
   BOOL            fInitialized = FALSE;
   LONG            lPubChanges;
   LONG            lPubConflicts;
   LONG            lSubChanges;

   /* Create the Replication object. */
   CoCreateInstance(CLSID_Replication, NULL, CLSCTX_INPROC_SERVER,
      IID_ISSCEMerge, (LPVOID *) &pISSCEMerge);
   
  /* Set Internet properties. */
   bstr = SysAllocString
     (L"https://www.adventure-works.com/sqlce/sqlcesa35.dll");
   pISSCEMerge->put_InternetURL(bstr);
   SysFreeString(bstr);

   bstr = SysAllocString(L"MyInternetLogin");
   pISSCEMerge->put_InternetLogin(bstr);
   SysFreeString(bstr);

   bstr = SysAllocString(L"<MyInternetPassword>");
   pISSCEMerge->put_InternetPassword(bstr);
   SysFreeString(bstr);
   
   /* Set Publisher properties */
   bstr = SysAllocString(L"SamplePublisher");
   pISSCEMerge->put_Publisher(bstr);
   SysFreeString(bstr);

   bstr = SysAllocString(L"AdventureWorks_SQLCE");
   pISSCEMerge->put_PublisherDatabase(bstr);
   SysFreeString(bstr);

   bstr = SysAllocString(L"SQLCEReplDemo");
   pISSCEMerge->put_Publication(bstr);
   SysFreeString(bstr);

   pISSCEMerge->put_PublisherSecurityMode(NT_AUTHENTICATION);

   /* Set Subscriber properties. */
   bstr = SysAllocString(L"Data Source=\\ssce.sdf");
   pISSCEMerge->put_SubscriberConnectionString(bstr);
   SysFreeString(bstr);

   bstr = SysAllocString(L"SQLCE Sub #1");
   pISSCEMerge->put_Subscriber(bstr);
   SysFreeString(bstr);

   /* Create the new anonymous subscription. */
   pISSCEMerge->AddSubscription(CREATE_DATABASE);

   /* Perform the first synchronization to download the initial  
          replica. */
   hr = pISSCEMerge->Initialize();
   if (SUCCEEDED(hr))
      {
      fInitialized = TRUE;
      hr = pISSCEMerge->Run();
      }

   if (SUCCEEDED(hr))
      {
      pISSCEMerge->get_PublisherChanges(&lPubChanges);
      pISSCEMerge->get_PublisherConflicts(&lPubConflicts);
      pISSCEMerge->get_SubscriberChanges(&lSubChanges);
      }
   else
      {
   if(SUCCEEDED(hr = pISSCEMerge->get_ErrorRecords(&pISSCEErrors)))
      {
      ShowErrors(pISSCEErrors);
      pISSCEErrors->Release();
      };
      }

   if (fInitialized)
      {
      (void)pISSCEMerge->Terminate();
      }

备注

有关支持的连接字符串属性,请参阅 LocalConnectionString 属性 (RDA)

   

另请参见

参考

新建订阅向导

概念

支持多个订阅
删除订阅
重新初始化订阅 (SQL Server Compact)

帮助和信息

获取帮助 (SQL Server Compact 3.5 Service Pack 1)