Partilhar via


Passo a passo: provisionando um cliente SQL Express

Neste passo a passo, você criará um banco de dados SQL Express denominado SyncExpressDB e um aplicativo de console que provisiona o banco de dados 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 banco de dados 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).

Criar um banco de dados expresso do SQL Server

A lista a seguir contém as etapas para criar um exemplo de banco de dados expresso do SQL Server.

  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 Mecanismo de Banco de Dados para Tipo de servidor.

  3. Selecione .\SQLEXPRESS para o nome do Servidor.

    Dica

    Se o nome do banco de dados SQL Express no seu computador for diferente, especifique esse nome.

  4. Especifique as credenciais apropriadas e clique em Conectar para se conectar ao banco de dados SQL Express.

  5. Clique com o botão direito do mouse em Bancos de dados na janela Pesquisador de Objetos; clique em Novo Banco de Dados.

  6. Digite SyncExpressDB para nome do Banco de dados e clique em OK.

Provisionar o banco de dados SQL Express

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 Express SyncExpressDB 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 ‘SyncSQLServerAndSQLExpress’, 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 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 Microsoft.Synchronization;
    using Microsoft.Synchronization.Data;
    using Microsoft.Synchronization.Data.SqlServer;
    
  8. Adicione a instrução a seguir ao método Main para criar uma conexão SQL com o banco de dados expresso.

    // create a connection to the SyncExpressDB database
    SqlConnection clientConn = new SqlConnection(@"Data Source=.\SQLEXPRESS; Initial Catalog=SyncExpressDB; Trusted_Connection=Yes");
    
  9. 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.

  10. 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, SqlConnection) 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);
    
  11. Adicione as instruções a seguir para provisionar o banco de dados SQL Express com artefatos relativos ao ProductsScope. Etapas de alto nível para provisionar um banco de dados SQL Express com artefatos relacionados ao escopo de sincronização:

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

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

      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 server provisioning object based on the ProductsScope
    SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, scopeDesc);
    
    // starts the provisioning process
    clientProvision.Apply();
    
  12. No Gerenciador de Soluções, clique com o botão direito do mouse em ProvisionClient e clique em Compilar.

  13. 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“.

  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, expanda .\SQLEXPRESS, Bancos de dados, SyncExpressDB 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.

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

Exemplo de código completo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.SqlClient;

using Microsoft.Synchronization;
using Microsoft.Synchronization.Data;
using Microsoft.Synchronization.Data.SqlServer;

namespace ProvisionClient
{
    class Program
    {
        static void Main(string[] args)
        {
            // create connection to the SQL Express database
            SqlConnection clientConn = new SqlConnection(@"Data Source=.\SQLEXPRESS; Initial Catalog=SyncExpressDB; Trusted_Connection=Yes");

            // create a connection to the SyncDB server database
            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 server provisioning object based on the ProductsScope
            SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, scopeDesc);

            // create Products table if the table does not already exist
            clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);

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

Consulte também

Outros recursos

Provisionamento para sincronização (SQL Server)