Compartilhar via


Passo a passo: provisionando um cliente SQL Compact

Neste passo a passo, você criará um banco de dados compacto SQL Server denominado SyncCompactDB e um aplicativo de console que provisiona o banco de dados compacto com artefatos relacionados a ProductsScope. O processo de provisão prepara o banco de dados cliente para a sincronização com o servidor. No passo a passo anterior Passo a passo: definindo um escopo e provisionando um servidor, você provisionou o banco de dados servidor com artefatos já relacionados à sincronização. Para obter mais detalhes técnicos sobre o provisionamento, consulte Provisioning the Clients e Provisionamento para sincronização (SQL Server).

Para criar um banco de dados compacto SQL Server

A lista a seguir contém etapas para criar o banco de dados compacto SyncCompactDB, que será usado como um cliente do banco de dados servidor SyncDB.

  1. No SQL Server Management Studio, clique no menu Arquivo e em Conectar Pesquisador de Objetos.

  2. Na caixa de diálogo Conectar ao Servidor, selecione SQL Server Compact Edition para Tipo de servidor.

  3. Clique na seta para baixo ao lado de Arquivo de banco de dados e clique em Novo Banco de Dados.

  4. Na caixa de diálogo Criar Novo Banco de Dados SQL Server Compact, digite C:\SyncSQLServerAndSQLCompact\SyncCompactDB.sdf para Nome do arquivo de banco de dados e clique em OK.

  5. Clique em Sim na caixa de mensagem relativa à senha em branco.

  6. Clique em Conectar na caixa de diálogo Conectar ao Servidor

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 ProductsScope.

  1. No Visual Studio, 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 ProvisionClient 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 ProvisionClient e clique em Adicionar Referência.

  6. Selecione 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. Repita as duas etapas anteriores para adicionar uma referência ao assembly System.Data.SqlServerCe.

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

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

    // create a connection to the SyncDB server database
    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.

  11. Adicione a instrução a seguir ao método Main para obter a descrição do escopo ProductsScope do SQL Server. Esta instrução invoca o método GetDescriptionForScope(String, SqlCeConnection) na classe SqlSyncDescriptionBuilder para recuperar a descrição do ProductsScope 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 the description of ProductsScope from the SyncDB server database
    DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("ProductsScope", serverConn);
    
  12. Adicione as instruções a seguir para provisionar o banco de dados compacto SQL Server com artefatos relativos ao ProductsScope. 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 CE provisioning object based on the ProductsScope
    SqlCeSyncScopeProvisioning clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);
    
    // starts the provisioning process
    clientProvision.Apply();
    

    Dica

    A classe SqlCeSyncScopeProvisioning é usada para provisionar bancos de dados do SQL Server Compact e a classe SqlCeSyncScopeProvisioning é usada para provisionar bancos de dados compactos (SQL Server Compact).

  13. No Gerenciador de Soluções, clique com o botão direito do mouse em ProvisionClient e clique em Compilar.

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

    Aviso

    Se você não definir o projeto atual como um projeto de inicialização e pressionar Ctrl+F5 novamente, o aplicativo ProvisionServer será reexecutado e você obterá uma mensagem de erro semelhante a: “o escopo que já existe no banco de dados servidor“.

  15. Pressione Ctrl+F5 para executar o programa.

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

  17. No SQL Server Management Studio, expanda o nó SQL Server Compact [My Computer\...\SyncCompactDB] e Tables. Deverão aparecer as seguintes tabelas adicionais criadas pelo processo de provisionamento: Products_Tracking, schema_info, scope_config e scope_info. 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 ProvisionClient
{
    class Program
    {
        static void Main(string[] args)
        {
            // create a connection to the SyncCompactDB database
            SqlCeConnection clientConn = new SqlCeConnection(@"Data Source='C:\SyncSQLServerAndSQLCompact\SyncCompactDB.sdf'");
            
            SqlConnection serverConn = new SqlConnection("Data Source=localhost; Initial Catalog=SyncDB; Integrated Security=True");

            // get the description of ProductsScope from the SyncDB server database
            DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("ProductsScope", serverConn);

            // create CE provisioning object based on the ProductsScope
            SqlCeSyncScopeProvisioning clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);

            // starts the provisioning process
            clientProvision.Apply();
        }
    }
}

Consulte também

Outros recursos

Provisionamento para sincronização (SQL Server)