locked
Campo 'msrepl_synctran_ts' como desabilitar RRS feed

  • Pergunta

  • Pessoal, o que significa o campo 'msrepl_synctran_ts' e qual sua funcionalidade no SQL Server? Recentemente o suporte do sistema precisou fazer algumas atualizações no sistema, no qual o mesmo retornava o "erro this column's data type requires the use of an embedded sql statement" quando selecionava os campos de algumas tabelas especificas. Identificamos que o problema estava na seleção de todos os campos e que 'msrepl_synctran_ts' estava indo junto. Depois que removeu da seleção tudo funcionou beleza, porém soube que é possível desabilitar o campo 'msrepl_synctran_ts' pra que não aparecesse mais.
    terça-feira, 25 de setembro de 2012 14:16

Respostas

  • Este campo existe na tabela pois ela deve estar configurada para replicação. Ele é útil em replicação de dados.

    Por isso, se você for jogar os registros desta tabela para outra tabela deverá especificar uma lista de campos, sem mencionar este campo nesta lista.

    Veja mais em:

    1) http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_26019686.html

    2) http://us.generation-nt.com/answer/field-added-replicated-tables-help-87003692.html


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 25 de setembro de 2012 14:25
  • Jerferson,

    Cara esta é uma coluna adicionada pelo MSDTC no processo de configuração da replicação. Ela tem a finalidade de garantir e controlar o envio de dados replicados entre os servidores.

    Por se tratar de um objeto da própria replicação não realize nenhuma alteração nela, muito menos exclua.

    Então você estava tendo problemas em Querys que utilizavam Select *, poxa vida isso tem que ser evitado, é um grande erro fazer isso disso em sua aplicação, pois podemos estar forçando uma sobrecarga de processamento de dados sem ter necessidade.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    terça-feira, 25 de setembro de 2012 14:28
    Moderador

Todas as Respostas

  • Este campo existe na tabela pois ela deve estar configurada para replicação. Ele é útil em replicação de dados.

    Por isso, se você for jogar os registros desta tabela para outra tabela deverá especificar uma lista de campos, sem mencionar este campo nesta lista.

    Veja mais em:

    1) http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_26019686.html

    2) http://us.generation-nt.com/answer/field-added-replicated-tables-help-87003692.html


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 25 de setembro de 2012 14:25
  • Jerferson,

    Cara esta é uma coluna adicionada pelo MSDTC no processo de configuração da replicação. Ela tem a finalidade de garantir e controlar o envio de dados replicados entre os servidores.

    Por se tratar de um objeto da própria replicação não realize nenhuma alteração nela, muito menos exclua.

    Então você estava tendo problemas em Querys que utilizavam Select *, poxa vida isso tem que ser evitado, é um grande erro fazer isso disso em sua aplicação, pois podemos estar forçando uma sobrecarga de processamento de dados sem ter necessidade.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    terça-feira, 25 de setembro de 2012 14:28
    Moderador
  • Entendi o significado Roberson, porém não ficou muito claro sobre a necessidade da existência do tipo: É uma configuração feita manualmente pra uma tabela especifica ou é padrão do SQL Server??? É possível omitir esse campo pra que não apareça???Quais os danos que poderia ter???
    terça-feira, 25 de setembro de 2012 14:59
  • Este campo não é criado por padrão pelo SQL. Ele só existe nesta tabela porque alguém configurou o SQL para trabalhar com replicação de dados e configurou esta tabela para ser replicada.

    Você não deve mexer neste campo.

    Não entendi exatamente o que quis dizer com "omitir esse campo". Que omití-lo onde? E por que?


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 25 de setembro de 2012 16:32
  • Acho que foi bobeira ao pergunta sobre omissão do campo. Minha intenção era de omitir na consulta gráfica que o usuário do suporte faz no momento que necessita fazer qualquer atualização no sistema deles, porém não é tão importante e nem empata concluir qualquer procedimento modificação de de atualização no sistema e no banco.

    Um outro detalhe, esse campo fica armazenado no banco [MASTER] da tabela sysobjects? Lá consigo extrair mais informações sobre o campo??

    terça-feira, 25 de setembro de 2012 17:28
  • OK. Estes campos ficam exclusivamente nas tabelas que você encontrou.

    Não existirão muitas informações a cerca deste campo.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 25 de setembro de 2012 17:37
  • Beleza parceiros. Agradecido pelas explicações. De qualquer forma não impediu de fazer atualização necessário, mas queria me assegurar das funcionalidades do campo no SQL Server. Irei pesquisar e ler mais sobre o assunto.
    quarta-feira, 26 de setembro de 2012 16:59
  • O pessoal de Dev do sistema solicitou que fosse excluído o campo msrepl_sysctran_ts das tabelas da Base.

    Como seria capaz de deletar do Banco de Dados das tabelas o campo sem trazer prejuízos no funcionamento da Base. Não existe atualmente técnica de replicação nenhuma em funcionamento, mas essa coluna foram migradas em conjunto de outra versão do SQL Server, no qual existe uma técnica de replicação funcionando. 

    Utilizei as instruções na Base :

    SELECT *

    FROM sys.colunms

    WHERE name = 'msrepl_sysctran_ts'

    SELECT o.name, c.name

    FROM smartHTO.dbo.sysobjects o inner join smartHTO.dbo.syscolumns c ON
    o.id = c.id
    WHERE o.xtype = 'U' and c.name = 'msrepl_synctran_ts'

    Percebir também que nem todas as tabelas eram replicadas.

    Ressalto que já estão sendo planejadas a implementação de uma nova técnica de alta disponibilidade e que é bem provável que seja Mirror ou Replication novamente, porém numa nova versão do SQL Server.

    Agradeço desde já!






    quinta-feira, 18 de abril de 2013 14:57