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