Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Llamar 2 procedimientos al mismo tiempo usando UNION

Estas en el tema de Llamar 2 procedimientos al mismo tiempo usando UNION en el foro de SQL Server en Foros del Web. Hola Me gustaria saber si es posible llamar a 2 procedimientos almacenados de 2 servidores remotos al mismo tiempo y visualizarlos no por separado, si ...
  #1 (permalink)  
Antiguo 25/06/2010, 00:59
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Exclamación Llamar 2 procedimientos al mismo tiempo usando UNION

Hola
Me gustaria saber si es posible llamar a 2 procedimientos almacenados de 2 servidores remotos al mismo tiempo y visualizarlos no por separado, si no unir los resultados.
Es decir algo asi como:

Execute server_1.planilla.dbo.calculasalario
UNION
Execute server_1.planilla.dbo.calculasalario

Nota: Lo habia intentado de esta forma y no me sirvio..

Tambien de esta otra, y no me muestra los resultados completos..

SELECT * FROM OPENQUERY([BETHOVEN],'EXEC planilla.dbo.PlanillaResumenMontos "145"')
UNION
SELECT * FROM OPENQUERY([DOWNING],'EXEC planilla.dbo.PlanillaResumenMontos"145"')


---
Agradeceria sus comentarios
  #2 (permalink)  
Antiguo 25/06/2010, 07:54
Avatar de vrenzo  
Fecha de Ingreso: febrero-2007
Mensajes: 289
Antigüedad: 17 años, 2 meses
Puntos: 15
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Podrias mensionar que version de SQL estas usando y ... tu BETHOVEN y DOWNING si esta en SQL, MySql, Oracle, ....
__________________
***
Saludos.
  #3 (permalink)  
Antiguo 25/06/2010, 09:18
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Podrias usar la estructura:
Código SQL:
Ver original
  1. INSERT INTO <tabla> EXEC proc_alm(<params>)
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 25/06/2010, 13:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Ayer me salio

SELECT * FROM OPENQUERY([BETHOVEN],'EXEC planilla.dbo.PlanillaResumenMontos "145"')
UNION ALL
SELECT * FROM OPENQUERY([DOWNING],'EXEC planilla.dbo.PlanillaResumenMontos"145"')

Le agregue el union all y me devuelve todos los resultados completos, pero quisiera saber si
a algo como esto:

Declare @id_planilla as numeric(18,0)

SET @id_planilla = 157

SELECT * FROM OPENQUERY([DOWNING],'EXEC planilla.dbo.PlanillaResumenMontos"+@id_planilla+" ')

Necesito que me reconozca los parametros que le estoy enviando en tiempo de ejecucion, pero
siempre me da problemas con este signo (+)
es como que no le pongo bien las comillas o algo asi.

Agradeceria su ayuda
  #5 (permalink)  
Antiguo 25/06/2010, 13:53
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Man en cuanto a esta estructura: 1.
INSERT INTO <tabla> EXEC proc_alm(<params>)

Me podrias explicar mejor la parte del insert into<tabla>

Gracias

a ambos
  #6 (permalink)  
Antiguo 25/06/2010, 14:11
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Bueno, depende de lo que quieras hacer, porque necesitaras una tabla para usar INSERT INTO ... EXEC.
Siguiendo tu codigo, prueba asi:
Código SQL:
Ver original
  1. SET @id_planilla = 157
  2. SET @query = 'EXEC planilla.dbo.PlanillaResumenMontos '''+@id_planilla+''''
  3. SELECT * FROM OPENQUERY([DOWNING],@query)
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 25/06/2010, 14:12
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

y si a tu consulta de arriba le pones mas espacios de separacion.. .yo creo que resultaria bien... esta buena tu consulta... excelente...
mira esta pagina... esta en ingles, igual es interesantisima... jeje
Saludos

http://forums.devx.com/showthread.php?t=22662
  #8 (permalink)  
Antiguo 25/06/2010, 16:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Man no se que sea, me tira un error cerca de @query.

DECLARE @id_planilla as numeric(18,0)
DECLARE @query varchar(100)
SET @id_planilla = 157
SET @query = 'EXEC planilla.dbo.PlanillaResumenMontos '''+@id_planilla+''''
SELECT * FROM OPENQUERY([BETHOVEN],@query) <--- AQUI ME MARCA ESE ERROR


Ya creo que me reconoce el (+) pero no se que podria ser eso.
  #9 (permalink)  
Antiguo 25/06/2010, 17:20
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Código SQL:
Ver original
  1. DECLARE @id_planilla AS NUMERIC(18,0)
  2. DECLARE @query VARCHAR(100)
  3. SET @id_planilla = 157
  4. SET @query = 'EXEC planilla.dbo.PlanillaResumenMontos '''+CAST(@id_planilla AS VARCHAR)+''''
  5. SELECT * FROM OPENQUERY([BETHOVEN],@query)
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #10 (permalink)  
Antiguo 25/06/2010, 21:24
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Muchas Gracias man por tu ayuda
Pero todavia me da el mismo error, no se que sea..
Y es en la misma parte.
  #11 (permalink)  
Antiguo 26/06/2010, 00:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

Gente decidi utilizar SQL Dinamico, porque me di cuenta que el openquery no aceptaba parametros.

Este es mi codigo:

DECLARE @QUERY AS NVARCHAR(50)
DECLARE @QUERYS AS NVARCHAR(50)
DECLARE @id AS NVARCHAR(10)
DECLARE @UNIR AS NVARCHAR(10)
DECLARE @SQL NVARCHAR(4000)
DECLARE @SQLS NVARCHAR(4000)
DECLARE @SQLX NVARCHAR(400)

SET @UNIR = N'UNION ALL'
SET @id = 157
SET @QUERY = 'DOWNING.planilla.dbo.PlanillaResumenMontos '+@id+''
SET @QUERYS = 'BETHOVEN.planilla.dbo.PlanillaResumenMontos '+@id+''

SET @SQL=N'SELECT * FROM OPENQUERY([DOWNING],''' + @QUERY + ''')'
SET @SQLS=N'SELECT * FROM OPENQUERY([BETHOVEN],''' + @QUERYS + ''')'
SET @SQLX = ''+@SQL+''+@UNIR+''+@SQLS+''

EXEC sp_executesql @SQLX

EL problema es que no se xq no me reconoce el UNION ALL y me tira error.

Agradeceria sus aportes...
  #12 (permalink)  
Antiguo 26/06/2010, 00:54
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

DECLARE @QUERY AS NVARCHAR(50)
DECLARE @QUERYS AS NVARCHAR(50)
DECLARE @id AS NVARCHAR(10)
DECLARE @UNIR AS NVARCHAR(10)
DECLARE @SQL NVARCHAR(4000)
DECLARE @SQLS NVARCHAR(4000)
DECLARE @SQLX NVARCHAR(400)

SET @UNIR = N'UNION ALL'
SET @id = 157
SET @QUERY = 'DOWNING.planilla.dbo.PlanillaResumenMontos '+@id+''
SET @QUERYS = 'BETHOVEN.planilla.dbo.PlanillaResumenMontos '+@id+''

SET @SQL=N'SELECT * FROM OPENQUERY([DOWNING],''' + @QUERY + ''')'
SET @SQLS=N'SELECT * FROM OPENQUERY([BETHOVEN],''' + @QUERYS + ''')'
SET @SQLX = ''+@SQL+''+@UNIR+''+char(10)+''+@SQLS+''

EXEC sp_executesql @SQLX

GENTE AHORA ME TIRA:

No se puede procesar el objeto "BETHOVEN.planilla.dbo.PlanillaResumenMontos 157". El proveedor OLE DB "SQLNCLI" para el servidor vinculado "BETHOVEN" indica que el objeto no tiene columnas o el usuario actual no tiene permisos en ese objeto.
  #13 (permalink)  
Antiguo 27/06/2010, 15:47
 
Fecha de Ingreso: junio-2010
Mensajes: 1
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Llamar 2 procedimientos al mismo tiempo usando UNION

BUENO UNA MANERA PUEDE SER ESTA...........


DECLARE @id_planilla as int
DECLARE @QUERY AS NVARCHAR(50)
DECLARE @QUERYS AS NVARCHAR(50)
DECLARE @id AS NVARCHAR(10)
DECLARE @SQL NVARCHAR(4000)
DECLARE @SQLX NVARCHAR(400)

SET @id = 145
SET @QUERY = 'MATILDE.planilla.dbo.Planilla_DesglocePago '+@id+''


SET @SQL=N'SELECT * FROM OPENQUERY([MATILDE],''' + @QUERY + ''')'
SET @SQLX = ''+@SQL+''



CREATE TABLE #Tabla_Temp500 (servidor nvarchar(50),id_emp numeric (18,0),
cedula nvarchar(20),
apellidos nvarchar(30),
nombre nvarchar(20),
anualidadReconocida tinyint,
categoria nvarchar(50),
salario_base money,
anualidad money,
cantidad numeric (18,0),
id_contrato numeric (18,0),
rubro nvarchar(30),
tipo nvarchar(15),
formula nvarchar(100),
monto money)



insert #Tabla_Temp500 (id_emp, cedula, apellidos, nombre, anualidadReconocida, categoria, salario_base,
anualidad, cantidad , id_contrato, rubro, tipo, formula, monto) EXEC sp_executesql @SQLX


update #Tabla_Temp500 set servidor='MATILDE' where servidor is NULL


SET @QUERY = 'OSCAR.planilla.dbo.Planilla_DesglocePago '+@id+''


SET @SQL=N'SELECT * FROM OPENQUERY([OSCAR],''' + @QUERY + ''')'
SET @SQLX = ''+@SQL+''


insert #Tabla_Temp500 (id_emp, cedula, apellidos, nombre, anualidadReconocida, categoria, salario_base,
anualidad, cantidad , id_contrato, rubro, tipo, formula, monto) EXEC sp_executesql @SQLX
update #Tabla_Temp500 set servidor='OSCAR' where servidor is NULL


select *from #Tabla_Temp500


drop table #Tabla_Temp500



LOS NOMBRES OSCAR Y MATILDE SON LOS NOMBRES DE LOS SERVIDORES....

CREO QUE EL PROBLEMA QUE HAY ES QUE NO ESTA INICIALIZADO EL SERVICIO DE RPC Y LO PUEDES ACTIVAR EJECUTANDO EL SIGUIENTE CODIGO



EXEC SP_SERVEROPTION OSCAR,[rpc out],true

exec sp_helpserver OSCAR

Etiquetas: llamar, union, procedimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:27.