Erro 203

27/09/2004

0

Boa tarde a todos.

Executo um script que chama diversas Procedures. Por exemplo:
Procedure Principal
=============
Begin Transaction Nome
script....

EXEC @retorno = Procedure1 par1, par2, par3
If @retorno 0
BEGIN
ROLLBACK TRANSACTION Nome
GOTO FIM
END
Commit Transaction Nome
FIM:
continuaçãoo do script

Procedure1
=======
Begin Transaction Nome1
script.....

SELECT Cod_Cliente, Nome_Cliente
INTO #Tabela_Temporaria_Global
From Clientes

EXEC @retorno = Procedure2 par1, par2
If @retorno 0
BEGIN
ROLLBACK TRANSACTION Nome1
GOTO FIM
END
Commit Transaction Nome1
FIM:

Procedure2
=======
BEGIN TRANSACTION Nome2
script.....

SELECT @controle = MAX(Controle) From Teste

SET @comando = ´SELECT identity(int, ´+CAST(@controle as varchar(10))+´,1) as Id, TT.Cod_Cliente, TT.Nome_Cliente
INTO #Outra_Tabela_Temporaria
FROM Tabela_Temporaria_Global TT´
EXEC @comando
IF @@error 0
BEGIN
ROLLBACK TRANSACTIO Nome2
GOTO FIM
END
continua....

FIM:
RETURN



Problemas:

O EXEC @comando está retornando o erro 203, que não consegui encontrar na documentação do BOL.
Como estou usando uma Proc que chama outra, pensei que definindo begin tran eu teria um controle sobre as operações, mas quando acontece algum erro o sql me diz que o rollback não é do respectivo begin, mas verifiquei e me parece que é.

O que eu estou fazendo de errado?
Será que alguém poderia me ajudar?

[]´s
Roberto
PS: Não mandei os scripts originais pois são muito grandes.


Robertolucio

Robertolucio

Responder

Posts

27/09/2004

Marcus.magalhaes

Roberto, boa tarde.

Vc deve estar usando algum nome de transação e estar ser referindo a ele mesmo depois de de ter feito commit/rollback. ou algo assim.

Revise seus scripts para que vc possa identificar.

Att,


Responder

27/09/2004

Robertolucio

Marcus, boa tarde.

É possivel definir na Proc pricipal um begin tran e a cada proc que eu for chamando definir um save tran e ao final desta (proc) se der tudo bem um commit se não um rollback, e seguir assim até a última proc a ser executada e depois de tudo dar um commit tran ou rollback tran?

Se sim, quais seriam as implicações a nível de segurança?

Att,
Roberto


Responder

27/09/2004

Marcus.magalhaes

Oi Roberto.

É possível sim...vc pode fazer isso, porém deve tomar cuidado com o seguinte:

1) A performance pode ser afetada, pois sua transação poderá ser longa.
2) A disponibilidade pode ser afetada, pq vc pode acabar gerando lock por mto tempo.

Att,


Responder

27/09/2004

Robertolucio

Oi Marcos.

Obrigado pela atenção e desculpe a chatice!

Abs,
Roberto


Responder

27/09/2004

Marcus.magalhaes

Boa noite Roberto.

Sem problemas.

[]´s


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar