次の方法で共有


サブスクリプションの作成

サブスクリプションを作成するには、先に MicrosoftSQL Server レプリケーションを構成し、SQL Server パブリケーションを作成し、Microsoft インターネット インフォメーション サービス (IIS) を構成する必要があります。この処理の詳細については、「レプリケーションの実装 (SQL Server Compact)」および「Web 同期の構成ウィザードのヘルプ」を参照してください。

パブリケーションを作成し、IIS を正しく構成したら、以下のいずれかの方法で 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 では 1 つのデータベースを複数のパブリケーションと同期できるので、AddSubscription メソッドを使用するときは、複数のサブスクリプションの影響を考慮する必要があります。

AddSubscription メソッドの呼び出しでは、CreateDatabase と ExistingDatabase の 2 つのオプションを使用できます。複数のサブスクリプションを使用する場合、CreateDatabase オプションは影響を受けませんが、ExistingDatabase オプションは影響を受けます。ExistingDatabase を使用する場合、AddSubscription メソッドを呼び出す前に、Publisher プロパティ、Publication プロパティ、および PublisherDatabase プロパティの値を指定する必要があります。

既存のサブスクリプションのコピー

スマート デバイスどうしで既存のサブスクリプションをコピーして、新しいサブスクリプションを作成できます。これにより、すべてのサブスクライバで同じパブリケーションが使用されているときに、多数のデバイスにスマート デバイス アプリケーションを配置することが容易になります。

1 台のスマート デバイスに初期サブスクリプションを作成したら、アプリケーションと初期サブスクリプションを必要な数のデバイスにコピーすることによって、アプリケーションを配置できます。アプリケーションの初回同期時、SQL Server Compact 3.5 では新しいデバイスや物理フォルダの場所の変更に応じて、アプリケーションを新しいサブスクライバとして自動的に認識し、新しいサブスクリプションを作成します。初期サブスクリプションをデバイスにコピーすると、初期サブスクリプションをネットワーク経由でデバイスにダウンロードする必要がなくなります。

注意

SQL Server Compact 3.5 では、コンパクト フラッシュ メモリやドライブを含む外部記憶デバイスがサポートされています。大規模な SQL Server Compact 3.5 データベースを効率的に導入するには、この種の記憶デバイスを使って配布するのも 1 つの方法です。ただし、スマート デバイスの 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)