Jump to content

Archived

This topic is now archived and is closed to further replies.

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"

Share this post


Link to post
Share on other 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!!!

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.