none
Replicação Merge Filtro SubQuerys RRS feed

  • Pergunta

  • Boa tarde!
    Tenho um ambiente para replicação do tipo Merge entre uma base de dados SQL Server 2008R2 Standard com algumas Base de dados SQL Server 2008 R2 Express.

    Estou ciente que replicação não é perfomatica e nem vantajosa utilizando subquerys (Views), mas não encontrei um meio de realizar o filtro que desejo pois o meu parametro que vem em hostName() não consigo filtrar em algumas tabelas.

    Meu problema é que algumas informações estão sendo removida do meu cliente porém subindo para meu servidor, sendo que era para manter nas duas base de dados.

    Como posso solucionar meu problema?

    Desde já Obrigado.

    sexta-feira, 6 de março de 2015 18:38

Respostas

  • Bertoncini,

    Foi o que pensei, acredito que o problema possa estar relacionado com o SQL Server Express!!!

    Você teria como fazer o teste com outro Subscriber? Por exemplo, uma versão Standard ou Enterprise?


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 12 de março de 2015 19:11
  • Pior que não tenho uma outra versão para instalar, e ainda mais para ser colocado no cliente.

    Porem para não ter mais tantos problemas, nas tabelas que eu estava usando subSelects acrescentei uma coluna a mais que é o Guid (Host-Name) do meu cliente nas tabelas assim solucionando esse probelma.

    Não gostei de ter feito dessa maneira, pois fugiu da normalização das tabelas.


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    quinta-feira, 12 de março de 2015 22:59

Todas as Respostas

  • Bertoncini,

    Por padrão o SQL Server Express em ambientes de replicação só podem fazer o papel de assinante, ou seja, receber os dados.

    Você destacou que estão removendo alguns dados do servidor de seu cliente que estão sendo enviados para seus servidores, mas então se você esta utilizando replicação Merge o que é processado em cada uma das pontas deve ser atualizada na outra.

    Sinceramente esta um cenário meio estranho!!!!


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    domingo, 8 de março de 2015 00:55
  • Explicar um pouco mais a minha situação.

    Os servidores cliente são Lojas, e essas lojas só quero que permaneça as vendas de no periodo de 12 meses, pois não é necessario ter informações tão antigas na loja, por isso eu removo em algumas das minhas views tem uma clausula where com o getdate subtraindo 1 ano (DateAdd(yy,-1,getDate())).

    O Problema que estou tendo é que esta removendo os dados do meu cliente indiferentemente se passou um ano ou não.

    (Utilizo o HostName() para saber qual Loja esta se conectando ao meu servidor central)

    domingo, 8 de março de 2015 01:25
  • Bertoncini,

    Estão mas esta remoção que você se refere seria os filtros no processo de replicação?

    Ou existe uma rotina que realiza isso após a replicação ser realizar?


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    domingo, 8 de março de 2015 01:37
  • Na hora de Replicação, eu na where da tabela existe um filtro com essa limitação de periodo.

    Exemplo:

    Select <publish_columns> from Venda WHERE data >DateAdd(yy,-1,getDate()) -- essa tabela aparentemente não removeu nenhum registro no cliente

    Select <publish_columns> from VendaItem where Cod_Venda (select Cod_Venda from Venda_Item where Data > DateAdd(yy,-1,getDate())) --Aqui está meu problema acredito. Essa tabela é uma das quais são removido algumas informações"Linha de registro" do cliente.

    Sei que subquery não é legal usar em uma replicação,porém qual a melhor forma de realizar esse filtro?

    domingo, 8 de março de 2015 02:20
  • Bertoncini,

    Este mesmo select que você esta tendo problemas no Servidor que esta replicando os dados você tem este mesmo problema?


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 9 de março de 2015 23:45
  • No meu servidor(Publish) não tenho problema, tenho problemas somente no cliente(Subscriber)

    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    terça-feira, 10 de março de 2015 00:02
  • Bertoncini,

    Foi o que pensei, acredito que o problema possa estar relacionado com o SQL Server Express!!!

    Você teria como fazer o teste com outro Subscriber? Por exemplo, uma versão Standard ou Enterprise?


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 12 de março de 2015 19:11
  • Pior que não tenho uma outra versão para instalar, e ainda mais para ser colocado no cliente.

    Porem para não ter mais tantos problemas, nas tabelas que eu estava usando subSelects acrescentei uma coluna a mais que é o Guid (Host-Name) do meu cliente nas tabelas assim solucionando esse probelma.

    Não gostei de ter feito dessa maneira, pois fugiu da normalização das tabelas.


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    quinta-feira, 12 de março de 2015 22:59