Поделиться через


Пошаговое руководство. Провизионирование клиента с помощью фильтрованной области

В этом пошаговом руководстве будет создано приложение командной строки, используемое для провизионирования компактной базы данных SQL Server SyncCompactDB с помощью артефактов, связанных с областью синхронизации OrdersScope-NC. В сущности, в процессе провизионирования выполняется провизионирование клиентской базы данных для синхронизации данных, связанных с областью OrdersScope-NC, с серверной базой данных. Подробные сведения о провизионировании клиентов см. в Provisioning the Clients, а подробные сведения об отфильтрованных областях см. в Как фильтровать данные для синхронизации базы данных (SQL Server).

Провизионирование базы данных SQL Server Compact

В следующем списке перечислены шаги создания приложения командной строки, использующего Visual Studio для провизионирования базы данных SQL Server Compact SyncCompactDB с использованием артефактов, связанных с областью синхронизации OrdersScope-NC.

  1. В обозревателе решений щелкните правой кнопкой мыши Решение «SyncSQLServerAndSQLCompact», укажите Добавить и выберите Создать проект.

  2. Выберите Visual C# в Типы проектов и выберите Приложение командной строки в Шаблоны.

  3. Укажите ProvisionFilteredScopeClient в качестве имени проекта.

  4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Создать проект.

  5. В обозревателе решений щелкните правой кнопкой мыши ProvisionFilteredScopeClient и выберите Добавить ссылку.

  6. Выберите System.Data.SqlServerCe, Microsoft.Synchronization, Microsoft.Synchornization.Data, Microsoft.Synchronization.Data.SqlServer, Microsoft.Synchronization.Data.SqlServerCe и нажмите кнопку ОК, чтобы закрыть диалоговое окно Добавить ссылку.

  7. Добавьте следующие инструкции 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;
    
  8. Добавьте следующую инструкцию к методу Main, чтобы создать соединение SQL с компактной базой данных.

    //create connection to the compact DB
    SqlCeConnection clientConn = new SqlCeConnection(@"Data Source='C:\SyncSQLServerAndSQLCompact\SyncCompactDB.sdf'");
    
  9. Добавьте следующую инструкцию к методу 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.

  10. Добавьте следующую инструкцию к методу 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);
    
  11. Добавьте следующие инструкции для провизионирования компактной базы данных SyncCompactDB с использованием артефактов, связанных с синхронизацией. В этом коде создается объект SqlCeSyncScopeProvisioning, задается флаг для создания таблицы Orders в клиентской базе данных и выполняется процесс провизионирования для добавления к клиенту артефактов, связанных с областью. Общие этапы провизионирования базы данных SQL Server Compact с использованием артефактов, связанных с областью синхронизации, состоят в следующем:

    1. Создайте экземпляр класса SqlCeSyncScopeProvisioning на основе DbSyncScopeDescription, полученного в предыдущем шаге, и соединение с компактной базой данных. Класс SqlCeSyncScopeProvisioning представляет провизионирование базы данных SQL Server Compact для определенной области, представленной объектом DbSyncScopeDescription.

    2. Вызовите метод 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();
    
  12. В обозревателе решений щелкните правой кнопкой мыши ProvisionFilteredScopeClient и выберите команду Построить.

  13. В обозревателе решений щелкните правой кнопкой мыши ProvisionFilteredScopeClient и выберите команду Назначить запускаемым проектом.

  14. Нажмите клавиши Ctrl+F5, чтобы выполнить программу.

  15. Нажмите ВВОД, чтобы закрыть окно командной строки.

  16. В среде SQL Server Management Studio щелкните правой кнопкой мыши SQL Server Compact [Мой компьютер\...\SyncCompactDB] и выберите Обновить.

  17. Разверните узел SQL Server Compact [Мой компьютер\...\SyncCompactDB], разверните Таблицы, после чего должны отобразиться таблицы «Orders» и «Orders_tracking», созданные в процессе провизионирования. Также в процессе провизионирования создаются и другие объекты, такие как триггеры и хранимые процедуры.

  18. Не закрывайте 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)