Pergunta

Acabei de se deparar com algo perturbador, eu estava tentando implementar a replicação transacional a partir de um banco de dados cujo projeto não está sob nosso controle. Essa replicação estava em ordem para executar relatórios sem sobrecarregar o sistema muito. Após a tentar a replicação apenas algumas das mesas atravessou.

Em tabelas de investigação não foram selecionados para ser replicado porque não tem uma chave primária, eu pensei que este não pode ser ele mesmo é mostrado como uma chave primária se eu usar ODBC e MS Access, mas não no estúdio de gestão. Também as consultas não são ridiculamente lento.

Eu tentei inserir um registro duplicado e não dizendo sobre um índice exclusivo (não uma chave primária). Parece ser o mesas foram implementadas usando um índice exclusivo como se opor a uma chave primária. Por que eu não sei que eu poderia gritar.

Existe uma maneira de executar replicação transacional ou uma alternativa, ele precisa ser vivo (último minuto ou dois). O servidor db principal é atualmente o SQL 2000 SP3a eo relato Server 2005.

A única coisa que eu tenho atualmente pensou em tentar se definir a replicação-se como se fosse um outro tipo de banco de dados. Eu acredito que a replicação dizer oráculo é possível que essa força o uso de dizer um driver ODBC como eu assumir o acesso está usando, portanto, mostrando uma chave primária. Eu não sei se isso está fora precisa da minha profundidade sobre este assunto.

Foi útil?

Solução

Como MSDN estados , não é possível criar um transacional replicação em tabelas sem chaves primárias. Você pode usar Mesclar replicação (só ida), que não exige uma chave primária, e ele automaticamente cria uma coluna rowguid se ele não existe:

replicação de mesclagem usa uma globalmente identificador exclusivo coluna (GUID) para identificar cada linha durante o merge processo de replicação. Se um publicada tabela não tem um uniqueidentifier coluna com a propriedade ROWGUIDCOL e um índice único, replicação adiciona 1. Assegurar que qualquer selecionar e inserir declarações que referência publicados mesas de usar listas de coluna. Se uma tabela é não publicado e replicação adicionado a coluna, a coluna é removido; Se a coluna já existido, ele não é removido.

Infelizmente, você terá uma penalidade de desempenho se estiver usando replicação de mesclagem.

Se você precisa usar replicação para Relatórios apenas, e você não precisa os dados para ser exatamente o mesmo que no editor, então você poderia considerar replicação de instantâneo também

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top