Error con proceso TRIGGER en SQL SERVER

16/05/2006 - 17:30 por Alexandra | Informe spam
Buenas,

estoy intentando crear un desencadenador que en el momento en que se inserte
o modifique cualquier dato en la Tabla1, automáticamente me actualice los
datos en una tabla (Tabla_Db1) externa en access. He creado el ODBC y me la
consulta correctamente, el caso es que al insertar una línea en Tabla1, el
trigger me peta, me da el siguiente error:

Servidor: mensaje 7391, nivel 16, estado 1, procedimiento prueba_ins, línea 16

No se puede realizar la operación. El proveedor OLE DB 'MSDASQL' no pudo
iniciar una transacción distribuida.
[OLE/DB provider returned message: [Microsoft][Controlador ODBC Microsoft
Access]Atributo o identificador de opción no válido ]
Traza de error de OLE DB [OLE/DB Provider 'MSDASQL'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

Alguien tiene alguna idea? Os adjunto el código del trigger a ver si veis
algún fallo. Muchas gracias.

CREATE TRIGGER prueba_ins ON dbo.Tabla1
FOR INSERT
AS
BEGIN
DECLARE @ins_ident int
DECLARE @ins_nombre char
DECLARE @ins_apellidos char
DECLARE @ins_telefono char

select @ins_ident = ident from inserted
select @ins_nombre = nombre from inserted
select @ins_apellidos = apellidos from inserted
select @ins_telefono = telefono from inserted

insert into openquery(PRUEBA, 'select * from Tabla_Db1')
values (@ins_ident, @ins_nombre, @ins_apellidos, @ins_telefono)
END

De momento solo estoy intentando que funcione con la operación de insertar.
Cuando le intento insertar la siguiente fila es cuando peta y da el error:

insert into Tabla1 values (3,'asdfas','etretre','89834')

Las tablas tienen exactamente los mismos campos, es muy sencilla, consta de
identificador, nombre, apellidos y telefono. La he creado de prueba para
hacerlo funcionar y posteriormente pasarlo a la base de datos real que es
mucho más compleja. Teneis alguna idea por favor??

Gracias!!!

CRM Woman
 

Leer las respuestas

#1 Isaias
16/05/2006 - 18:01 | Informe spam
Alexandra

El problema, creo yo, esta en que esta utilizando OPENQUERY para hacer un
INSERT en una base externa (Access) y este comado solo sirve para EXTRAER
informacion de una fuente externa a SQL

insert into openquery

No creo que funcione.
Saludos
IIslas


"Alexandra" escribió:

Buenas,

estoy intentando crear un desencadenador que en el momento en que se inserte
o modifique cualquier dato en la Tabla1, automáticamente me actualice los
datos en una tabla (Tabla_Db1) externa en access. He creado el ODBC y me la
consulta correctamente, el caso es que al insertar una línea en Tabla1, el
trigger me peta, me da el siguiente error:

Servidor: mensaje 7391, nivel 16, estado 1, procedimiento prueba_ins, línea 16

No se puede realizar la operación. El proveedor OLE DB 'MSDASQL' no pudo
iniciar una transacción distribuida.
[OLE/DB provider returned message: [Microsoft][Controlador ODBC Microsoft
Access]Atributo o identificador de opción no válido ]
Traza de error de OLE DB [OLE/DB Provider 'MSDASQL'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

Alguien tiene alguna idea? Os adjunto el código del trigger a ver si veis
algún fallo. Muchas gracias.

CREATE TRIGGER prueba_ins ON dbo.Tabla1
FOR INSERT
AS
BEGIN
DECLARE @ins_ident int
DECLARE @ins_nombre char
DECLARE @ins_apellidos char
DECLARE @ins_telefono char

select @ins_ident = ident from inserted
select @ins_nombre = nombre from inserted
select @ins_apellidos = apellidos from inserted
select @ins_telefono = telefono from inserted

insert into openquery(PRUEBA, 'select * from Tabla_Db1')
values (@ins_ident, @ins_nombre, @ins_apellidos, @ins_telefono)
END

De momento solo estoy intentando que funcione con la operación de insertar.
Cuando le intento insertar la siguiente fila es cuando peta y da el error:

insert into Tabla1 values (3,'asdfas','etretre','89834')

Las tablas tienen exactamente los mismos campos, es muy sencilla, consta de
identificador, nombre, apellidos y telefono. La he creado de prueba para
hacerlo funcionar y posteriormente pasarlo a la base de datos real que es
mucho más compleja. Teneis alguna idea por favor??

Gracias!!!

CRM Woman

Preguntas similares