Eu tenho 8 máquinas individuais do SQL Server 2008 R2, cada uma hospedando 1 banco de dados. Cada banco de dados possui uma estrutura e um esquema de tabela idênticos e dados totalmente exclusivos.
Gostaria de estabelecer um servidor de relatório (pode ser 2008 ou 2012), que consolide as linhas das tabelas selecionadas nos 8 servidores de origem em uma única instância dessas tabelas no servidor de relatório. Essa é uma replicação unidirecional (nenhuma alteração será feita no servidor de relatório). Vou precisar replicar as alterações dos bancos de dados de origem com latência relativamente baixa (digamos 20 a 30 segundos).
Além disso, gostaria de encontrar métodos para conseguir isso com o menor impacto possível nos servidores de origem. Agentes de terceiros, gatilhos ou mods de esquema para esses servidores são difíceis no meu ambiente.
Minhas perguntas:
- Quais são as arquiteturas e tecnologias promissoras para alcançar esse objetivo?
- Eu olhei para a replicação de mesclagem do SQL Server, mas estou preocupado com a latência. Esta é uma tecnologia apropriada para esse objetivo?
- Existem arquiteturas muitos para um para replicação transacional?
- Devo observar a replicação 1 para 1 em 8 bancos de dados no meu servidor de relatórios, seguida por alguma função de mesclagem personalizada (uma replicação em duas etapas)?
Obrigado John
fonte
Respostas:
Você pode conseguir isso com a replicação transacional . Abaixo está como você pode fazê-lo.
Nota : É necessário alterar um pouco o esquema da tabela para conseguir isso, pois você precisa identificar exclusivamente essas linhas ao replicar para o assinante. Como pré-requisito do T-Rep, você precisa ter tabelas com PK definidas.
Abaixo está sua tabela de exemplo nos servidores Publisher que estão em todos os seus 8 servidores que você deseja consolidar linhas no servidor de relatórios:
No servidor do assinante , você precisa criar a mesma tabela, mas com PK diferente para identificar exclusivamente as linhas no assinante (se não o fizer, o T-Rep falhará com violação da PK - presumo que você não possa modificar a estrutura PK em produção ao vivo, é melhor modificar no assinante)
O script abaixo o ajudará a configurar o T-Rep, basta alterar o nome do banco de dados, o nome do servidor de destino e o nome do objeto.
Alguns pontos a serem observados:
Em sp_addsubscription, verifique se
@sync_type = N'automatic'
E as propriedades do artigo devem ser definidas como:
Então, finalmente, você pode ter linhas consolidadas de todos (no meu caso, 3 servidores), como abaixo:
Então, em resumo,
Crie tabela no Assinante com PK incluída como ServerName.
Crie a replicação das tabelas com @sync_type = N'automatic 'e a propriedade Article configuradas para "Manter o objeto existente inalterado".
Execute o agente de captura instantânea.
Verifique os dados consolidados no assinante.
fonte