Estimados, necesito su ayuda. Tengo un procedimiento almacenado que me
genera una salida, y esta la quiero insertar en una tabla temporal, pero no
me lo permite (la consulta es a un servidor Vinculado), me arroja el
siguiente error...
Servidor: mensaje 7391, nivel 16, estado 1, procedimiento
IGC_SEL_relacion_vend_zona_cd_vigente, línea 48
The operation could not be performed because the OLE DB provider 'SQLOLEDB'
was unable to begin a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in the
specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].
La sentencia es la siguiente:
create table #vendedores_zonas_cd (
fecha datetime NULL,
cod_cd integer NULL ,
nombre_cd varchar(50) NULL ,
cod_zona integer NULL ,
nombre_zona varchar(50) NULL ,
cod_superv varchar(15) NULL,
nombre_superv varchar(50) NULL,
rut_vend varchar(15) NULL,
cod_vend integer NULL ,
nombre_vend varchar(50) NULL ,
finiquitado tinyint NULL )
insert into #vendedores_zonas_cd
exec IGC_SEL_relacion_vend_zona_cd_vigente '05-07-2005', '05-07-2005', null,
null
Esto se puede hacer...???
Les adjunto ademas el Procedimiento IGC_SEL_relacion_vend_zona_cd_vigente
de consulta.
CREATE PROCEDURE dbo.IGC_SEL_relacion_vend_zona_cd_vigente ( @finicio_char
varchar(10), @ftermino_char varchar(10), @finicio_date datetime,
@ftermino_date datetime )
AS
set dateformat MDY
declare @fechaConsulta datetime, @fecha_inicio datetime, @fecha_termino
datetime
if (len(@finicio_char) > 0) and (len(@ftermino_char) > 0)
begin
set @fecha_inicio = convert(datetime, @finicio_char, 102)
set @fecha_termino = convert(datetime, @ftermino_char, 102)
end
else
begin
set @fecha_inicio = @finicio_date
set @fecha_termino = @ftermino_date
end
-
-
create table #salida (
fecha datetime NULL,
cod_cd integer NULL ,
nombre_cd varchar(50) NULL ,
cod_zona integer NULL ,
nombre_zona varchar(50) NULL ,
cod_superv varchar(15) NULL,
nombre_superv varchar(50) NULL,
rut_vend varchar(15) NULL,
cod_vend integer NULL ,
nombre_vend varchar(50) NULL ,
finiquitado tinyint NULL
)
select *
into #sgcv_vendedores
from --openrowset('SQLOLEDB', 'LANIN-SQL'; 'SGCV'; 'svcg2142','select * from
sgcv..sgcv_vendedores')
[lanin-sql].sgcv.dbo.sgcv_vendedores
select *
into #sgcv_vendedores_historico
from --openrowset('SQLOLEDB', 'LANIN-SQL'; 'SGCV'; 'svcg2142','select * from
sgcv..sgcv_vendedores_historico')
[lanin-sql].sgcv.dbo.sgcv_vendedores_historico
select *
into #sgcv_zonas
from --openrowset('SQLOLEDB', 'LANIN-SQL'; 'SGCV'; 'svcg2142','select * from
sgcv..sgcv_zonas')
[lanin-sql].sgcv.dbo.sgcv_zonas
-
-
select *
into #sgcv_zonas_historico
from --openrowset('SQLOLEDB', 'LANIN-SQL'; 'SGCV'; 'svcg2142','select * from
sgcv..sgcv_zonas_historico')
[lanin-sql].sgcv.dbo.sgcv_zonas_historico
select *
into #sgcv_cdistribucion
from --openrowset('SQLOLEDB', 'LANIN-SQL'; 'SGCV'; 'svcg2142','select * from
sgcv..sgcv_cdistribucion')
[lanin-sql].sgcv.dbo.sgcv_cdistribucion
order by id_cd
while ( @fecha_inicio <= @fecha_termino )
begin
set @fechaConsulta = dateadd(ms,-2,dateadd(day,1,@fecha_inicio))
select v.id_vendedor,
v.idv,
v.nombre,
z.id_zona,
v.finiquitado
into #vend_zona_actual
from #sgcv_vendedores v inner join
#sgcv_zonas z on v.id_zona = z.id_zona
order by v.idv
select idv,
max(fecha_modific) fecha_modific
into #cambios_vendedor
from #sgcv_vendedores_historico
where fecha_modific <= @fechaConsulta
group by idv
-
-
select b.id_vendedor,
a.idv,
b.nombre,
b.id_zona,
b.finiquitado
into #vend_zona_anterior
from #cambios_vendedor a inner join
#sgcv_vendedores_historico b on b.idv = a.idv and b.fecha_modific =
a.fecha_modific
order by a.idv
Leer las respuestas