创建订阅
创建订阅之前,必须配置 Microsoft SQL Server 复制,创建 SQL Server 发布并配置 Microsoft Internet 信息服务 (IIS)。有关此过程的信息,请参阅实现复制 (SQL Server Compact Edition) 和配置 Web 同步向导帮助。
创建发布并正确配置 IIS 之后,您可以使用下列方法之一创建 SQL Server 2005 Compact Edition (SQL Server Compact Edition) 订阅:
- 在 SQL Server Management Studio 中创建订阅
有关详细信息,请参阅如何创建 SQL Server Compact Edition 订阅 (SQL Server Management Studio) - 调用 AddSubscription 方法
有关详细信息,请参阅如何创建 SQL Server Compact Edition 订阅(以编程方式)
调用 AddSubscription 方法
SQL Server Compact Edition 应用程序使用 Replication 对象以编程方式创建订阅,并将该订阅下载到 Microsoft 智能设备上的 SQL Server Compact Edition 数据库中。该应用程序通过创建 Replication 对象,设置相应的 Replication 对象属性,然后调用 AddSubscription 方法来完成上述过程。本主题中的示例为您演示了相关操作步骤。
多个订阅和 AddSubscription 方法
由于 SQL Server Compact Edition 支持将一个数据库与多个发布同步,因此,当您使用 AddSubscription 方法时,必须考虑多个订阅的影响。
在调用 AddSubscription 方法时可使用两个选项:CreateDatabase 和 ExistingDatabase。使用多个订阅时,CreateDatabase 选项不会受影响,但 ExistingDatabase 选项则会受影响。使用 ExistingDatabase 时,您必须为 Publisher、Publication 和 PublisherDatabase 属性提供值,然后才能调用 AddSubscription 方法。
复制现有订阅
通过将现有订阅从一个智能设备复制到另一个上,您可以创建一个新订阅。如果所有订阅服务器都使用相同的发布,则很容易通过这种方式将智能设备应用程序部署到多个设备上。
您可以在一个智能设备上创建初始订阅,然后通过将该应用程序和初始订阅复制到任意多的设备上来部署该应用程序。在应用程序首次进行同步时,由于该新设备和/或物理文件夹位置改变,SQL Server Compact Edition 会自动将其识别为新的订阅服务器,并创建一个新订阅。通过将初始订阅复制到一个设备上,您就不用通过网络将初始订阅下载到该设备上。
注意: |
---|
SQL Server Compact Edition 支持外接存储设备,包括 Compact Flash 内存和驱动器。部署大型 SQL Server Compact Edition 数据库的高效方式是将它们分布在这类存储设备上。但是,与智能设备的 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/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)