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

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]=1
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.
- Editado Emile Petrus Abi-Abib segunda-feira, 11 de maio de 2015 14:44
- Tipo Alterado Eduardo.Romero quarta-feira, 13 de maio de 2015 19:56
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]
-
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.
- Editado Emile Petrus Abi-Abib terça-feira, 12 de maio de 2015 20:46
-
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]