Поделиться через


Создание подписки

Прежде чем создавать подписку, необходимо настроить репликацию Microsoft SQL Server, создать публикацию SQL Server и настроить службы Microsoft IIS (Internet Information Services). Дополнительные сведения см. в разделах Реализации репликации (SQL Server Compact Edition) и Справка мастера настройки веб-синхронизации.

После создания публикации и настройки параметров служб IIS можно создать подписку SQL Server 2005 Compact Edition (SQL Server Compact Edition). Для этого можно воспользоваться одним из следующих методов.

Вызов метода AddSubscription

Приложения SQL Server Compact Edition используют объект Replication для программного создания подписки и загрузки этой подписки в базу данных SQL Server Compact Edition на смарт-устройстве Microsoft. Для этого приложение создает объект Replication, устанавливает соответствующие свойства объекта Replication и вызывает метод AddSubscription. Примеры выполнения этих действий приведены ниже в данном разделе.

Несколько подписок и метод AddSubscription

Поскольку SQL Server Compact Edition поддерживает синхронизацию одной базы данных с несколькими публикациями, при использовании метода AddSubscription необходимо учитывать эффекты, возникающие при работе с несколькими подписками.

There are two options used when calling the AddSubscription method: CreateDatabase and ExistingDatabase. Использование нескольких подписок не влияет на параметр ExistingDatabase, однако влияет на параметр CreateDatabase. При использовании параметра ExistingDatabase необходимо перед вызовом метода AddSubscription указать значения свойств Publisher, Publication, и PublisherDatabase.

Копирование существующей подписки

Новую подписку можно создать путем копирования существующей подписки с одного смарт-устройства на другое. Это упрощает развертывание приложения для смарт-устройств на нескольких устройствах, если все подписчики используют одну публикацию.

Можно создать начальную подписку на одном из смарт-устройств, а затем развернуть приложение путем копирования приложения и начальной подписки на все необходимые смарт-устройства. Когда приложение в первый раз выполняет синхронизацию, SQL Server Compact Edition обнаруживает, что подключается новое устройство и/или изменилось физическое расположение папки. В результате SQL Server Compact Edition автоматически распознает приложение как нового подписчика и создает новую подписку. Копирование начальной подписки на устройство позволяет не выполнять загрузку начальной подписки на устройство по сети.

Примечание.
SQL Server Compact Edition поддерживает внешние устройства хранения данных, включая накопители и память Compact Flash. Перенос баз данных SQL Server Compact Edition на подобных устройствах представляет собой эффективный способ развертывания больших баз данных. Однако время доступа этих устройств значительно превышает время доступа оперативной памяти смарт-устройств. Поэтому применение подобных устройств может снизить производительность приложений.

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/sqlcesa30.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();

   

См. также

Основные понятия

Поддержка нескольких подписок
Удаление подписки
Повторная инициализация подписки (SQL Server Compact Edition)

Справка и поддержка

Получение помощи по SQL Server Compact Edition