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

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

После создания публикации и настройки параметров служб IIS можно создать подписку SQL Server Compact 3.5 с помощью одного из следующих методов:

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

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

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

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

При вызове метода AddSubscription имеется два параметра: CreateDatabase и ExistingDatabase. Использование нескольких подписок не влияет на параметр ExistingDatabase, однако влияет на параметр CreateDatabase. При использовании параметра ExistingDatabase необходимо перед вызовом метода AddSubscription указать значения свойств Publisher, Publication, и PublisherDatabase.

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

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

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

Примечание

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

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 (удаленный доступ к данным).

   

См. также

Другие ресурсы

Мастер создания подписок

Поддержка нескольких подписок

Удаление подписки

Повторная инициализация подписки (SQL Server Compact)