建立訂閱
建立訂閱之前,必須先設定 MicrosoftSQL Server 複寫、建立 SQL Server 發行集,並設定 Microsoft Internet Information Services (IIS)。如需此程序的詳細資訊,請參閱<實作複寫 (SQL Server Compact)>及<設定 Web 同步處理精靈說明>。
建立發行集並正確設定 IIS 後,即可使用下列任一方法建立 SQL Server Compact 3.5 訂閱:
在 SQL Server Management Studio 中建立訂閱
如需詳細資訊,請參閱<如何:建立 SQL Server Compact 訂閱的發行集 (SQL Server Management Studio)>
呼叫 AddSubscription 方法
如需詳細資訊,請參閱<如何:建立訂閱 (以程式設計方式)>
呼叫 AddSubscription 方法
SQL Server Compact 3.5 應用程式使用 Replication 物件,以程式設計的方式建立訂閱,並下載到 Microsoft 智慧型裝置上的 SQL Server Compact 3.5 資料庫。應用程式執行此作業的方式是,建立 Replication 物件、設定適當的 Replication 物件屬性,然後呼叫 AddSubscription 方法。此主題中的範例顯示如何執行此動作。
多重訂閱與 AddSubscription 方法
由於 SQL Server Compact 3.5 支援同步處理單一資料庫與多個發行集,因此當您使用 AddSubscription 方法時,必須考量多重訂閱的作用。
呼叫 AddSubscription 方法會使用兩個選項:CreateDatabase 及 ExistingDatabase。使用多重訂閱不會影響 CreateDatabase 選項,但會影響 ExistingDatabase 選項。當您使用 ExistingDatabase 時,必須先提供 Publisher、Publication 及 PublisherDatabase 屬性的值,然後再呼叫 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)>。