Compartilhar via


Passo a passo: provisionando um cliente com escopo filtrado

Neste passo a passo, você criará um aplicativo de console, que provisiona o banco de dados compacto SQL Server SyncCompactDB com artefatos relacionados ao escopo de sincronização OrdersScope-NC. Basicamente, o processo de provisionamento prepara o banco de dados cliente para a sincronização de dados relacionados ao escopo OrdersScope-NC com o banco de dados servidor. Para obter mais detalhes sobre o provisionamento de clientes, consulte Provisioning the Clients. Para obter detalhes sobre escopos filtrados, consulte Como filtrar dados para sincronização de bancos de dados (SQL Server).

Para provisionar o banco de dados SQL Server Compact

A lista a seguir contém as etapas para criar um aplicativo de console usando o Visual Studio para provisionar o banco de dados SQL Server Compact SyncCompactDB com artefatos relacionados ao escopo de sincronização OrdersScope-NC.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse em Solução ‘SyncSQLServerAndSQLCompact’, aponte para Adicionar e clique em Novo Projeto.

  2. Selecione Visual C# em Tipos de Projeto e selecione Aplicativo do Console em Modelos.

  3. Digite ProvisionFilteredScopeClient para nome do projeto.

  4. Clique em OK para fechar a caixa de diálogo Novo Projeto.

  5. Na janela Gerenciador de Soluções, clique com o botão direito do mouse em ProvisionFilteredScopeClient e clique em Adicionar Referência.

  6. Selecione System.Data.SqlServerCe, Microsoft.Synchronization, Microsoft.Synchornization.Data, Microsoft.Synchronization.Data.SqlServer, Microsoft.Synchronization.Data.SqlServerCe e clique em OK para fechar a caixa de diálogo Adicionar Referência.

  7. Adicione as instruções using a seguir ao início do arquivo Program.cs após as instruções using existentes.

    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. Adicione a instrução a seguir ao método Main para criar uma conexão SQL com o banco de dados compacto.

    //create connection to the compact DB
    SqlCeConnection clientConn = new SqlCeConnection(@"Data Source='C:\SyncSQLServerAndSQLCompact\SyncCompactDB.sdf'");
    
  9. Adicione a instrução a seguir ao método Main para criar uma conexão SQL com o banco de dados servidor.

    //create connection to the server DB
    SqlConnection serverConn = new SqlConnection("Data Source=localhost; Initial Catalog=SyncDB; Integrated Security=True");
    

    Importante

    Na instrução anterior, substitua o nome do servidor pelo nome da instância do seu servidor, caso não esteja usando a instância padrão. Por exemplo: se o nome de sua instância do SQL Server for MYSQLINSTANCE, substitua (local) por .\MYSQLINSTANCE.

  10. Adicione a instrução a seguir ao método Main para obter a descrição do escopo OrdersScope-NC do banco de dados servidor SyncDB. Esta instrução invoca o método GetDescriptionForScope(String, SqlCeConnection) na classe SqlSyncDescriptionBuilder para recuperar a descrição do OrdersScope-NC do servidor.

    A classe DbSyncScopeDescription é usada para especificar o nome do escopo de sincronização e a lista de tabelas a serem sincronizadas. Essas informações podem ser especificadas explicitamente ou podem ser obtidas através da consulta ao banco de dados usando o método GetDescriptionForScope(String, String, SqlConnection). Neste passo a passo, você usará o método GetDescriptionForScope(String, String, SqlConnection) da classe SqlSyncDescriptionBuilder para recuperar a descrição do escopo do servidor.

    // get description for the OrdersScope-NC scope from the SyncDB server database
    DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("OrdersScope-NC", serverConn);
    
  11. Adicione as instruções a seguir para provisionar o banco de dados compacto SyncCompactDB com artefatos relacionados à sincronização. Este código cria um objeto SqlCeSyncScopeProvisioning, define o sinalizador para criar a tabela Orders no banco de dados cliente e executa o processo de provisionamento para adicionar ao cliente artefatos relacionados a escopo. Etapas de alto nível para provisionar um banco de dados SQL Server Compact com artefatos relacionados ao escopo de sincronização:

    1. Crie uma instância da classe SqlCeSyncScopeProvisioning com base no DbSyncScopeDescription obtido na etapa anterior e uma conexão com o banco de dados compacto. A classe SqlCeSyncScopeProvisioning representa o provisionamento de um banco de dados SQL Server Compact para um escopo específico que é representado por um objeto DbSyncScopeDescription.

    2. Invoque o método Apply()()()() no objeto SqlCeSyncScopeProvisioning para iniciar o processo de provisionamento, que cria a infraestrutura de controle de alterações no banco de dados compacto.

      Dica

      Não é necessário invocar explicitamente o método SetCreateTableDefault(DbSyncCreationOption) com o valor DbSyncCreationOption como CreateOrUseExisting porque o CreateOrUseExisting é o valor padrão usado pela estrutura de sincronização. A tabela Products é criada automaticamente no banco de dados compacto durante o processo de provisionamento. O método SetCreateTableDefault(DbSyncCreationOption) é usado para especificar se tabelas base devem ser criadas quando um escopo é configurado.

    // create a CE provisioning object
    SqlCeSyncScopeProvisioning clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);
    
    // start the provisioning process
    clientProvision.Apply();
    
  12. No Gerenciador de Soluções, clique com o botão direito do mouse em ProvisionFilteredScopeClient e clique em Compilar.

  13. No Gerenciador de Soluções, clique com o botão direito do mouse em ProvisionFilteredScopeClient novamente e clique em Definir como Projeto de Inicialização.

  14. Pressione Ctrl+F5 para executar o programa.

  15. Pressione ENTER para fechar a janela do prompt de comando.

  16. No SQL Server Management Studio, clique com o botão direito do mouse em SQL Server Compact [My Computer\...\SyncCompactDB] e clique em Atualizar.

  17. Expanda o nó SQL Server Compact [My Computer\...\SyncCompactDB] e Tables. Deverão aparecer as tabelas Orders e Orders_tracking, criadas pelo processo de provisionamento. Há outros objetos, como gatilhos e procedimentos armazenados, criados pelo processo de provisionamento.

  18. Mantenha o Visual Studio e o SQL Server Management Studio abertos.

Exemplo de código completo

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();
        }
    }
}

Consulte também

Outros recursos

Como filtrar dados para sincronização de bancos de dados (SQL Server)