Configurar sincronização Web

Aplica-se a:SQL Server

A opção de sincronização Web para SQL Server Merge Replication permite a replicação de dados utilizando o protocolo HTTPS sobre a Internet. Para utilizar a sincronização Web, complete primeiro os seguintes passos de configuração:

  1. Crie novas contas de domínio e mapeie logons do SQL Server.

  2. Configure o computador que está executando o Serviços de Informação Internet da Microsoft (IIS) para sincronizar assinaturas.

  3. Configure uma publicação de mesclagem para permitir a sincronização da Web.

  4. Configure uma ou mais assinaturas para usar a sincronização da Web.

Observação

Se você planeja replicar grandes volumes de dados ou usar grandes tipos de dados, como varchar(max), leia a seção "Replicando grandes volumes de dados" neste tópico.

Para configurar com sucesso a sincronização Web, deve decidir como configurar a segurança para satisfazer os seus requisitos e políticas particulares. Toma estas decisões e cria as contas necessárias antes de tentares configurar o IIS, a publicação e as subscrições.

Os procedimentos seguintes descrevem uma configuração de segurança simplificada que utiliza contas locais. Esta configuração simplificada é adequada para instalações onde tanto o IIS como o SQL Server Publisher e o Distribuidor correm no mesmo computador, embora seja muito mais provável (e recomendado) que utilize uma topologia de múltiplos servidores para uma instalação em produção. Você pode substituir as contas de domínio pelas contas locais nos procedimentos.

Criação de novas contas e mapeamento dos logins do SQL Server

O SQL Server Replication Listener (replisapi.dll) liga-se ao Publisher ao fazer-se passar pela conta que especifica para o pool de aplicações associada ao site de replicação.

A conta que utiliza para o SQL Server Replication Listener precisa das permissões descritas no Merge Agent Security, na secção "Ligar ao Publisher ou Distribuidor." Em resumo, a conta deve:

  • Ser membro da Lista de Acesso à Publicação (PAL).

  • Ser mapeado para um login associado a um usuário no banco de dados de publicação.

  • Ser mapeado para um login associado a um usuário no banco de dados de distribuição.

  • Tenha permissões de leitura na partilha de instantâneo.

Se for a primeira vez que usa o SQL Server Replication, também precisa de criar contas e logins para os agentes de replicação. Para mais informações, consulte as secções "Configurar a Publicação" e "Configurar a Subscrição" neste artigo.

Antes de configurar a sincronização Web, leia a secção "Melhores Práticas de Segurança para Sincronização Web" neste artigo. Para obter mais informações sobre a segurança de sincronização da Web, consulte Security Architecture for Web Synchronization.

Configurando o computador que está executando o IIS

A sincronização da Web requer que você instale e configure o IIS. Precisa do URL do site de replicação antes de poder configurar uma publicação para usar sincronização Web.

A sincronização da Web é suportada no IIS a partir da versão 5.0. O Assistente de Configurar Sincronização Web não é suportado na versão 7.0 do IIS. A partir do SQL Server 2012, para utilizar o componente Web sync no servidor IIS, instale o SQL Server com replicação. Esta pode ser a edição gratuita do SQL Server Express.

TLS é necessário para sincronização da Web. Precisa de um certificado de segurança emitido por uma autoridade certificadora. Apenas para fins de teste, você pode usar um certificado de segurança autoemitido.

Para configurar o IIS para sincronização da Web

Criar um jardim web

O SQL Server Replication Listener dá suporte a duas operações de sincronização simultâneas por thread. Ultrapassar este limite pode fazer com que o Ouvinte de Replicação deixe de responder. A propriedade Número Máximo de Processos de Trabalho do conjunto de aplicações define o número de threads alocadas a replisapi.dll. Por defeito, esta propriedade está definida para 1.

Você pode oferecer suporte a um maior número de operações de sincronização simultâneas por CPU aumentando o valor da propriedade Processo de Trabalho Máximo. A expansão aumentando o número de processos de trabalho por CPU é conhecida como a criação de um "jardim da Web".

A jardinagem online permite que mais de dois subscritores se sincronizem ao mesmo tempo. Também aumenta a utilização da CPU em replisapi.dll, o que pode afetar negativamente o desempenho global do servidor. Equilibre estas considerações ao escolher um valor para Processos Máximo de Trabalhadores.

Para aumentar o máximo de processos de trabalho no IIS 7

  1. No Gerenciador de Serviços de Informações da Internet (IIS) , expanda o nó do servidor local e clique no nó Pool de Aplicativos .

  2. Selecione o pool de aplicativos associado ao site de sincronização da Web e clique em Configurações Avançadas no painel Ações .

  3. Na caixa de diálogo Configurações Avançadas, sob o título Modelo de Processo, clique na linha rotulada Máximo de Processos de Trabalho. Altere o valor da propriedade e, em seguida, clique em OK.

Configuração da publicação

Para usar a sincronização Web, crie uma publicação da mesma forma que cria uma publicação padrão de topologia de fusão. Para obter mais informações, consulte Publicar dados e objetos de banco de dados.

Após criar a publicação, ative a opção para permitir a sincronização Web utilizando um dos seguintes métodos: SQL Server Management Studio, Transact-SQL ou Replication Management Objects (RMO). Para permitir a sincronização Web, é necessário fornecer o endereço do servidor Web para as ligações dos Assinantes.

Se estiveres a usar um Publisher pela primeira vez, também tens de configurar um Distribuidor e uma partilha de snapshots. O Merge Agent em cada Assinante deve ter permissões de leitura no compartilhamento de snapshot. Para obter mais informações, consulte Configurar Distribuição e Proteger a Pasta de Snapshots.

Gen é uma palavra reservada nos ficheiros XML websync. Não tentes publicar tabelas que contenham colunas chamadas gen.

Configuração da subscrição

Depois de habilitar uma publicação e configurar o IIS, crie uma assinatura pull e especifique que a assinatura pull deve ser sincronizada usando o IIS. (A sincronização da Web é suportada apenas para subscrições pull.)

Atualização a partir de uma versão anterior do SQL Server

Se tiver uma topologia de sincronização Web existente configurada e atualizar o SQL Server, certifique-se de que a versão mais recente de replisapi.dll é copiada para o diretório virtual utilizado pela sincronização Web. Por defeito, a versão mais recente de replisapi.dll está localizada em C:\Program Files\Microsoft SQL Server\<nnn>\COM.

Replicação de grandes volumes de dados

Para ajudar a evitar potenciais problemas de memória nos computadores assinantes, a sincronização Web utiliza um tamanho máximo padrão de 100 MB para o ficheiro XML usado na transferência das alterações. Aumente o limite definindo a seguinte chave de registo:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\Replication

WebSyncMaxXmlSize DWORD 2000000

O intervalo de valores aceitáveis para esta chave é de 100 MB a 4 GB. O valor é especificado em KB. Definir este parâmetro para um valor elevado não garante que consiga sincronizar essa quantidade de dados. O limite efetivo é limitado pela quantidade de memória contígua disponível no computador do assinante. Se tiver de ter um valor superior a 100 MB, aumente gradualmente o valor e teste o consumo de memória com uma carga de trabalho típica no Assinante.

O tamanho máximo do arquivo XML é de 4 GB, mas a replicação sincroniza as alterações desse arquivo em lotes. O tamanho máximo do lote de dados e metadados é de 25 MB. Tem de garantir que os dados em cada lote não excedam cerca de 20 MB, o que deixa margem para os metadados e qualquer outra sobrecarga. Este limite tem as seguintes implicações:

  • Não podes replicar nenhuma coluna que faça com que os dados e metadados ultrapassem os 25 MB. Este limite pode ser um problema quando se replicam linhas que contêm grandes tipos de dados, como varchar(max).

  • Se replicar grandes volumes de dados, poderá ter de ajustar o tamanho do lote do Merge Agent.

O tamanho do lote para replicação de mesclagem é medido em gerações, que são coleções de alterações por artigo. Use os parâmetros -DownloadGenerationsPerBatch e -UploadGenerationsPerBatch do Merge Agent para especificar o número de gerações num lote. Para obter mais informações, consulte Replication Merge Agent.

Para grandes volumes de dados, especifique um pequeno número para cada um dos parâmetros de lote. Comece com um valor de 10 e depois ajuste com base nas necessidades e desempenho da aplicação. Normalmente, especificas estes parâmetros num perfil de agente. Para obter mais informações sobre perfis, consulte Replication Agent Profiles.

Melhores práticas de segurança para sincronização Web

A sincronização web oferece muitas opções para definições relacionadas com a segurança. Use a seguinte abordagem:

  • O Distribuidor e o Publicador do SQL Server podem estar no mesmo computador (uma configuração típica para replicação de mesclagem). No entanto, instala o IIS num computador separado.

  • Use o Transport Layer Security (TLS), anteriormente conhecido como SSL (Secure Sockets Layer), para criptografar a conexão entre o Assinante e o computador que executa o IIS. A sincronização web requer esta encriptação.

  • Use a Autenticação Básica para conexões do Assinante ao IIS. Ao utilizar a Autenticação Básica, o IIS pode estabelecer ligações ao Publisher/Distribuidor em nome do Assinante sem necessidade de delegação. A delegação é necessária se você usar a Autenticação Integrada.

    Observação

    A Autenticação Básica é o método pelo qual as credenciais são passadas para o IIS. A Autenticação Básica não impede especificar contas de domínio Windows para ligações feitas ao IIS.

  • Especifique que o Snapshot Agent corre sob uma conta de domínio Windows e que o agente faz ligações como essa conta. (Esta é a configuração padrão.) Especifique que cada Merge Agent seja executado sob a conta de domínio do utilizador que usa o computador do Assinante, e especifique que o agente faça ligações como essa conta.

    Para mais informações sobre as permissões que os agentes necessitam, consulte Modelo de Segurança do Agente de Replicação.

  • Especifique a mesma conta de domínio que o Merge Agent usa ao especificar uma conta e uma palavra-passe na página Web Server Information do Assistente de Nova Assinatura ou ao especificar valores para os parâmetros @internet_url e @internet_login de sp_addpullsubscription_agent. Essa conta deve ter permissões de leitura para o compartilhamento de instantâneo.

  • Cada publicação deve usar um diretório virtual separado para o IIS.

  • A conta sob a qual o SQL Server Replication Listener (replisapi.dll) funciona é também a conta que se liga ao Publisher e ao Distribuidor durante a sincronização. Esta conta deve ser mapeada para uma conta de login do SQL Server no Publisher e no Distributor. Para obter mais informações, consulte a seção "Definindo permissões para o SQL Server Replication Listener" no Configurar o IIS para sincronização da Web.

  • Podes usar FTP para entregar o snapshot do Publisher para o computador que executa o IIS. O computador que executa o IIS entrega sempre o snapshot ao Assinante usando HTTPS. Para obter mais informações, consulte Transferência de Instantâneos por FTP.

  • Se os servidores na topologia de replicação estiverem protegidos por um firewall, talvez seja necessário abrir portas no firewall para habilitar a sincronização da Web.

    • O computador assinante liga-se ao computador que executa IIS via HTTPS usando TLS, que normalmente está configurado para usar a porta 443. Os assinantes do SQL Server Compact também podem se conectar por HTTP, que normalmente é configurado para usar a porta 80.

    • O computador que executa o IIS normalmente liga-se ao Publisher ou Distribuidor usando a porta 1433 (instância padrão). Quando o Publicador ou Distribuidor é uma instância nomeada em um servidor com outra instância padrão, a porta 1500 normalmente é usada para se conectar à instância nomeada.

    • Se o computador a executar o IIS estiver separado do Distribuidor por um firewall e for usada uma partilha FTP para a entrega de snapshots, deve abrir as portas usadas para FTP. Para obter mais informações, consulte Transferência de Instantâneos por FTP.

Importante

Abrir portas no firewall pode deixar o servidor exposto a ataques mal-intencionados. Certifique-se de que compreende os sistemas de firewall antes de abrir portas. Para obter mais informações, consulte Considerações de segurança para uma instalação do SQL Server.