Пошаговое руководство. Провизионирование клиента с помощью фильтрованной области
В этом пошаговом руководстве будет создано приложение командной строки, используемое для провизионирования компактной базы данных SQL Server SyncCompactDB с помощью артефактов, связанных с областью синхронизации OrdersScope-NC. В сущности, в процессе провизионирования выполняется провизионирование клиентской базы данных для синхронизации данных, связанных с областью OrdersScope-NC, с серверной базой данных. Подробные сведения о провизионировании клиентов см. в Provisioning the Clients, а подробные сведения об отфильтрованных областях см. в Как фильтровать данные для синхронизации базы данных (SQL Server).
Провизионирование базы данных SQL Server Compact
В следующем списке перечислены шаги создания приложения командной строки, использующего Visual Studio для провизионирования базы данных SQL Server Compact SyncCompactDB с использованием артефактов, связанных с областью синхронизации OrdersScope-NC.
В обозревателе решений щелкните правой кнопкой мыши Решение «SyncSQLServerAndSQLCompact», укажите Добавить и выберите Создать проект.
Выберите Visual C# в Типы проектов и выберите Приложение командной строки в Шаблоны.
Укажите ProvisionFilteredScopeClient в качестве имени проекта.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Создать проект.
В обозревателе решений щелкните правой кнопкой мыши ProvisionFilteredScopeClient и выберите Добавить ссылку.
Выберите System.Data.SqlServerCe, Microsoft.Synchronization, Microsoft.Synchornization.Data, Microsoft.Synchronization.Data.SqlServer, Microsoft.Synchronization.Data.SqlServerCe и нажмите кнопку ОК, чтобы закрыть диалоговое окно Добавить ссылку.
Добавьте следующие инструкции using в начало файла Program.cs после имеющихся инструкций using.
using System.Data; using System.Data.SqlClient; using System.Data.SqlServerCe; using Microsoft.Synchronization; using Microsoft.Synchronization.Data; using Microsoft.Synchronization.Data.SqlServer; using Microsoft.Synchronization.Data.SqlServerCe;
Добавьте следующую инструкцию к методу Main, чтобы создать соединение SQL с компактной базой данных.
//create connection to the compact DB SqlCeConnection clientConn = new SqlCeConnection(@"Data Source='C:\SyncSQLServerAndSQLCompact\SyncCompactDB.sdf'");
Добавьте следующую инструкцию к методу Main, чтобы создать соединение SQL с серверной базой данных.
//create connection to the server DB SqlConnection serverConn = new SqlConnection("Data Source=localhost; Initial Catalog=SyncDB; Integrated Security=True");
Важно!
Если не используется экземпляр по умолчанию, в указанной выше инструкции замените имя сервера именем экземпляра используемого сервера. Например, если используемый экземпляр SQL Server имеет имя MYSQLINSTANCE, замените (local) на .\MYSQLINSTANCE.
Добавьте следующую инструкцию к методу Main, чтобы получить описание области OrdersScope-NC с серверной базы данных SyncDB. Эта инструкция вызывает метод GetDescriptionForScope(String, SqlCeConnection) класса SqlSyncDescriptionBuilder для получения описания OrdersScope-NC с сервера.
Класс DbSyncScopeDescription используется для указания имени области синхронизации и списка таблиц для синхронизации. Эти сведения могут быть указаны явным образом или получены путем запроса базы данных с помощью метода GetDescriptionForScope(String, String, SqlConnection). В данном пошаговом руководстве будет использоваться метод GetDescriptionForScope(String, String, SqlConnection) класса SqlSyncDescriptionBuilder для получения описания области с сервера.
// get description for the OrdersScope-NC scope from the SyncDB server database DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("OrdersScope-NC", serverConn);
Добавьте следующие инструкции для провизионирования компактной базы данных SyncCompactDB с использованием артефактов, связанных с синхронизацией. В этом коде создается объект SqlCeSyncScopeProvisioning, задается флаг для создания таблицы Orders в клиентской базе данных и выполняется процесс провизионирования для добавления к клиенту артефактов, связанных с областью. Общие этапы провизионирования базы данных SQL Server Compact с использованием артефактов, связанных с областью синхронизации, состоят в следующем:
Создайте экземпляр класса SqlCeSyncScopeProvisioning на основе DbSyncScopeDescription, полученного в предыдущем шаге, и соединение с компактной базой данных. Класс SqlCeSyncScopeProvisioning представляет провизионирование базы данных SQL Server Compact для определенной области, представленной объектом DbSyncScopeDescription.
Вызовите метод Apply()()()() на объекте SqlCeSyncScopeProvisioning, чтобы начать процесс провизионирования, в ходе которого создается инфраструктура отслеживания изменений в компактной базе данных.
Примечание
Явно вызывать метод SetCreateTableDefault(DbSyncCreationOption) со значением DbSyncCreationOption как CreateOrUseExisting не нужно, поскольку CreateOrUseExisting является значением по умолчанию, используемым Sync Framework. В процессе провизионирования таблица Products автоматически создается в компактной базе данных. Метод SetCreateTableDefault(DbSyncCreationOption) используется для указания на то, следует ли создавать базовые таблицы при настройке областей.
// create a CE provisioning object SqlCeSyncScopeProvisioning clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc); // start the provisioning process clientProvision.Apply();
В обозревателе решений щелкните правой кнопкой мыши ProvisionFilteredScopeClient и выберите команду Построить.
В обозревателе решений щелкните правой кнопкой мыши ProvisionFilteredScopeClient и выберите команду Назначить запускаемым проектом.
Нажмите клавиши Ctrl+F5, чтобы выполнить программу.
Нажмите ВВОД, чтобы закрыть окно командной строки.
В среде SQL Server Management Studio щелкните правой кнопкой мыши SQL Server Compact [Мой компьютер\...\SyncCompactDB] и выберите Обновить.
Разверните узел SQL Server Compact [Мой компьютер\...\SyncCompactDB], разверните Таблицы, после чего должны отобразиться таблицы «Orders» и «Orders_tracking», созданные в процессе провизионирования. Также в процессе провизионирования создаются и другие объекты, такие как триггеры и хранимые процедуры.
Не закрывайте Visual Studio и среду SQL Server Management Studio.
Полный пример кода
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlServerCe;
using Microsoft.Synchronization;
using Microsoft.Synchronization.Data;
using Microsoft.Synchronization.Data.SqlServer;
using Microsoft.Synchronization.Data.SqlServerCe;
namespace ProvisionFilteredScopeClient
{
class Program
{
static void Main(string[] args)
{
//create connection to the compact DB
SqlCeConnection clientConn = new SqlCeConnection(@"Data Source='C:\SyncSQLServerAndSQLCompact\SyncCompactDB.sdf'");
//create connection to the server DB
SqlConnection serverConn = new SqlConnection("Data Source=localhost; Initial Catalog=SyncDB; Integrated Security=True");
// get description for the OrdersScope-NC scope from the SyncDB server database
DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("OrdersScope-NC", serverConn);
// create a CE provisioning object
SqlCeSyncScopeProvisioning clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);
// create table if it does not already exist in the SyncCompactDB database
clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);
// start the provisioning process
clientProvision.Apply();
}
}
}
См. также
Другие ресурсы
Как фильтровать данные для синхронизации базы данных (SQL Server)