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.
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.
Selecione Visual C# em Tipos de Projeto e selecione Aplicativo do Console em Modelos.
Digite ProvisionFilteredScopeClient para nome do projeto.
Clique em OK para fechar a caixa de diálogo Novo Projeto.
Na janela Gerenciador de Soluções, clique com o botão direito do mouse em ProvisionFilteredScopeClient e clique em Adicionar Referência.
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.
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;
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'");
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.
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);
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:
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.
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();
No Gerenciador de Soluções, clique com o botão direito do mouse em ProvisionFilteredScopeClient e clique em Compilar.
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.
Pressione Ctrl+F5 para executar o programa.
Pressione ENTER para fechar a janela do prompt de comando.
No SQL Server Management Studio, clique com o botão direito do mouse em SQL Server Compact [My Computer\...\SyncCompactDB] e clique em Atualizar.
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.
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)