Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Fernando

update automatico em outo banco.

Recommended Posts

O "Distributed Transaction Coordinator" eu já havia executado todos os procedimentos.

 

Fiz conforme voce me falou e entre a trigger adicionei esse comando.

 

Acabou por apresentar outro erro.

 

MSG 111, level 15, state 1, line 3
'create trigger' must be the first statement in a query batch

 

Segue codigo

 

Acabei de editar:

 

reparei que estava faltando o GO

 

BEGIN DISTRIBUTED TRANSACTION

GO
CREATE TRIGGER CopyCarga01

 

Porem mesmo assim o resultado permanece continua no erro 8501

SET XACT_ABORT ON
	BEGIN DISTRIBUTED TRANSACTION
CREATE TRIGGER CopyCarga01
ON [BANCO_CARGA].[dbo].[Carga01]
FOR INSERT
AS
BEGIN
    DECLARE
	@Time_Stamp datetime,
	@Time_Stamp_ms int
    SELECT 
	    @Time_Stamp    = Time_Stamp,
		@Time_Stamp_ms = Time_Stamp_ms
		FROM 
	    INSERTED
	INSERT INTO [ORACLE11G]..[BANCO_CARGA].[CARGA01]
	VALUES
	(
	@Time_Stamp,
	@Time_Stamp_ms,
	NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
	NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
	NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
	NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
	)
	END
	COMMIT TRANSACTION
	SET XACT_ABORT OFF

Outro edit:

Novamente cometi um erro.

Eu pensei que o serviço Distributed Transaction Coordinator estava ativo porque eu já havia deixado ele ativo antes. Porem ele estava como inicialização "MANUAL" eu alterei para automatica e iniciei o serviço.


Porem continua não funcionando.

Agora apresentou o seguinte erro:

Msg 7391, Level 16, State 2, Procedure CopyCarga01, Line 14
The operation could not be performed because OLE DB provider "MSDAORA" for linked server "ORACLE11G"

Compartilhar este post


Link para o post
Compartilhar em outros sites

o BEGIN era dentro da transacao da trigger, deste modo:

CREATE TRIGGER CopyCarga01
ON [BANCO_CARGA].[dbo].[Carga01]
FOR INSERT
AS
BEGIN
SET XACT_ABORT ON
    BEGIN DISTRIBUTED TRANSACTION
DECLARE
    @Time_Stamp datetime,
    @Time_Stamp_ms int
SELECT
     @Time_Stamp = Time_Stamp,
        @Time_Stamp_ms = Time_Stamp_ms
        FROM
     INSERTED
    INSERT INTO [ORACLE11G].[BANCO_CARGA].[CARGA01]
    VALUES
    (
    @Time_Stamp,
    @Time_Stamp_ms,
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
    )
    COMMIT TRANSACTION
    SET XACT_ABORT OFF
    END

Este erro que deu agora é usuario sem acesso ao linkedserver e/ou falta de chave/dll:

http://support.microsoft.com/kb/280106

 

Outra coisa... dentro do linked server nao tem dois pontos!!!!

 

[ORACLE11G].[bANCO_CARGA].[CARGA01]

 

eh deste modo!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola sobre a forma incorreta (os dois pontos) eu também pensei a mesma coisa porem se usar [ORACLE11G].[bANCO_CARGA].[CARGA01] apresenta o seguinte erro.

Msg 208, Level 16, State 1, Procedure CopyCarga01, Line 16
Invalid object name 'ORACLE11G.BANCO_CARGA.CARGA01'



Estranhamente a Trigger foi até criada, o erro foi apresentado na hora de executar o INSERT para testar a TRIGGER.

Alterando novamente para:
[ORACLE11G]..[bANCO_CARGA].[CARGA01]

a trigger foi criada porem na hora de executar o update o mesmo erro:

msg 7391, Level 16, State 2, Procedure CopyCarga01, Line 16
the operation could not be performed because OLE DB provider "MSDAORA" for linked server "ORACLE11G" was unable to begin a distributed transaction

 

Eu não conheço muito de ORACLE, será que ainda falta eu criar alguma permissão especial diretamente no ORACLE ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer Funcionar.
Depois de pesquisar em diversos sites (todos em Inglês), em muitos deles falava que não era possível usar o Provider "Microsoft OLE DB Provider for Oracle" falava para utilizar o "Oracle Provider for OLE DB"

Apenas criei um novo LINKEDSERVER utilizando esse Provider e funcionou, ainda estou realizando testes mais a principio funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer Funcionar.

Depois de pesquisar em diversos sites (todos em Inglês), em muitos deles falava que não era possível usar o Provider "Microsoft OLE DB Provider for Oracle" falava para utilizar o "Oracle Provider for OLE DB"

 

Apenas criei um novo LINKEDSERVER utilizando esse Provider e funcionou, ainda estou realizando testes mais a principio funcionou.

 

Que bom que funcionou!!!

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.