none
Incompatibilidade entre a função UPDATETEXT e o monitoramento de mudanças do SQL Server RRS feed

  • Discussão Geral

  • Ao utilizar a função UPDATETEXT em uma tabela que tem o monitoramento de mudanças do SQL Server habilitado estou recebendo um erro. Gostaria de saber se o que desejo executar realmente é incompatível ou existe alguma configuração/alteração que possa fazer.

    Utilizo o SQL Server 2008R2 e infelizmente não tenho alternativa ao uso da função UPDATETEXT por questões de legado. Abaixo coloco o script que habilita o rastreamento em uma base qualquer, e nesta base cria uma tabela, habilita seu rastreamento e tenta utilizar a função. No script exemplo a base chama-se 'Tracking'.

    USE

    [master]

    GO


    /* Habilito o rastreamento no banco de dados */

    ALTER

    DATABASE [Tracking] SET CHANGE_TRACKING = ON

    GO

    Use

    Tracking

    go

    /* Crio uma tabela qualquer com campo blob */

    CREATE

    TABLE dbo.TabelaExemplo

    (ID int NOT NULL Primary Key,

      Observacao

    text NULL)  ON [PRIMARY]

    TEXTIMAGE_ON [PRIMARY]

    GO

    /* Habilito o rastreamento nesta tabela */

    ALTER

    TABLE [dbo].[TabelaExemplo] ENABLE CHANGE_TRACKING WITH(TRACK_COLUMNS_UPDATED = ON)

    GO

    /* Insiro uma linha qualquer na tabela de exemplo */

    Insert

    Into TabelaExemplo(ID) Values (1)

    go

    /* Chamo a função UPDATETEXT e recebo o erro

      UPDATETEXT is not allowed because the table is being tracked for change tracking.

    */

    DECLARE

    @pv binary(16)

    SELECT

    @pv=TEXTPTR([Observacao]) FROM [dbo].[TabelaExemplo] WHERE [ID]=

    UPDATETEXT

    [dbo].[TabelaExemplo].[Observacao] @pv NULL NULL N'Qualquer conteúdo'

    Em tempo: sem querer tinha postado esta questão neste fórum só que em inglês. Fui gentilmente respondido por Mariana Del Nero porém sua resposta não era para este caso. Infelizmente não consegui dar um reply no post original. Sinto muito.


    segunda-feira, 11 de maio de 2015 14:30

Todas as Respostas

  • Emile,

    Se eu consegui entender, você esta utilizando o Change Tracking?

    O que realmente você precisa fazer? Será que o Change Data Capture não poderia ajudar?


    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]

    terça-feira, 12 de maio de 2015 18:19
  • Caro Pedro,

    Obrigado pela resposta.

    Sim, estou usando o Change Tracking (o qual chamei de monitoramento de mudanças). E ele está me ajudando sim a monitorar as alterações/colunas/tabelas e afins. O problema é que usamos uma biblioteca de terceiros e esta biblioteca usa o comando UPDATETEXT em algumas situações. Então, após habilitar o monitoramento de alterações no banco e em algumas tabelas, ao executar a biblioteca o problema apareceu.

    Gostaria de saber se consigo compatibilizar o Change Tracking com o comando UPDATETEXT, senão terei que abandonar ou a biblioteca de terceiros ou o mecanismo de rastreamento de mudanças do SQL Server. Se a solução for partir para uma versão mais nova do SQL Server ainda é menos custoso que uma das trocas.

    Qualquer sugestão será bem vinda.


    terça-feira, 12 de maio de 2015 19:53
  • Emile,

    Veja estes dois links dos fóruns americanos:

    https://social.msdn.microsoft.com/Forums/pt-BR/a9be05d7-7af3-4ee1-9ee2-e71752d1350c/updatetext-and-sql-server-change-tracking?forum=520

    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/15b4a39f-538c-4d52-b61f-0ed1ef922254/update-is-not-allowed-error-when-trying-to-create-stored-procedure?forum=sqlgetstarted


    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, 14 de maio de 2015 19:07