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

Consultas complejas en Servidor remoto usando el linkserver

Estas en el tema de Consultas complejas en Servidor remoto usando el linkserver en el foro de SQL Server en Foros del Web. Saludos, tengo vinculado 1 servidor y al hacer consultas básicas funciona a la perfeccion, la cosa se complica cuando tengo una consulta que me genera ...
  #1 (permalink)  
Antiguo 03/11/2014, 11:30
 
Fecha de Ingreso: febrero-2005
Mensajes: 68
Antigüedad: 19 años, 2 meses
Puntos: 0
Consultas complejas en Servidor remoto usando el linkserver

Saludos, tengo vinculado 1 servidor y al hacer consultas básicas funciona a la perfeccion, la cosa se complica cuando tengo una consulta que me genera una tabla temporal, la consulto, usos sus datos y le agrego cálculos etc y luego le aplicao un select y muestro el resultado. En el servidor local funciona bien, pero lo que quiero hacer es hacer esa consulta en el servidor remoto y luego el resultado insertarlo en una tabla local, algo asi como que ejecuto todo en el servidor remoto y el resultado lo obtengo en mi tabla local. Al intentar sustituir las consultas con [Server].[BD].[tabla] y los elementos para hacer la consulta me genera un error. Mens. 117, Nivel 15, Estado 1, Línea 5
El nombre de objeto [Server].[BD].[tabla] contiene más del número máximo de prefijos. El máximo es 2. entre otros errores.

Cual seria el procedimiento mas idóneo para hacer este tipo de trabajos de acuerdo a su experiencia? algo que sea seguro y que funcione? alguna aplicación? gracias.
  #2 (permalink)  
Antiguo 03/11/2014, 12:15
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

Bueno, si no publicas los errores, es jugarle al adivino.

Según UNC para nombrar un objeto es:

SERVER.BASE.SCHEMA.VISTA (o TABLA)
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 03/11/2014, 13:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

Cita:
Iniciado por mogotocoro Ver Mensaje
Saludos, tengo vinculado 1 servidor y al hacer consultas básicas funciona a la perfeccion, la cosa se complica cuando tengo una consulta que me genera una tabla temporal, la consulto, usos sus datos y le agrego cálculos etc y luego le aplicao un select y muestro el resultado. En el servidor local funciona bien, pero lo que quiero hacer es hacer esa consulta en el servidor remoto y luego el resultado insertarlo en una tabla local, algo asi como que ejecuto todo en el servidor remoto y el resultado lo obtengo en mi tabla local. Al intentar sustituir las consultas con [Server].[BD].[tabla] y los elementos para hacer la consulta me genera un error. Mens. 117, Nivel 15, Estado 1, Línea 5
El nombre de objeto [Server].[BD].[tabla] contiene más del número máximo de prefijos. El máximo es 2. entre otros errores.

Cual seria el procedimiento mas idóneo para hacer este tipo de trabajos de acuerdo a su experiencia? algo que sea seguro y que funcione? alguna aplicación? gracias.
Que no es [server].[bd].[schema].[tabla] algo como miserver.mibase.dbo.mitabla???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 03/11/2014, 14:35
 
Fecha de Ingreso: febrero-2005
Mensajes: 68
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

el error sale en el escrito. es: Mens. 117, Nivel 15, Estado 1, Línea 5.

Una consulta, cual seria el mejor procedimiento para hacer lo que necesito? consultar en un servidor remoto y pasar la consulta a una tabla remota? tal como lo escribí en el post anterior
  #5 (permalink)  
Antiguo 03/11/2014, 14:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

Y como esta tu query lo puedes pojner???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 03/11/2014, 15:07
 
Fecha de Ingreso: febrero-2005
Mensajes: 68
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

Código SQL:
Ver original
  1. DECLARE @fin AS VARCHAR(20), @inicio AS VARCHAR(20),@NUMEROOPI    VARCHAR(20);
  2. SELECT @inicio=dateadd(dd,-2, datediff(dd,0,getdate()))
  3. SELECT @fin = DATEADD(s, -1, DATEADD(DAY, 0, CONVERT(DATETIME, CONVERT(DATE, GETDATE()))));
  4. --drop table LOCALHOST.ORIGEN.TMP_TRANRESPROD
  5. IF NOT EXISTS(SELECT TOP 1 * FROM SYSOBJECTS WITH (NOLOCK) WHERE NAME='TMP_TRANRESPROD')  BEGIN
  6.        CREATE TABLE localhost.origen.[dbo].[TMP_TRANRESPROD] (
  7.                [ID] [NUMERIC](18, 0) IDENTITY (1, 1) NOT NULL ,
  8.                [CodTabla] [VARCHAR] (100) NULL ,
  9.                [CodItem] [VARCHAR](100) NULL,
  10.                [Descrip1] [VARCHAR] (50) NULL ,
  11.                [Unidad] [VARCHAR] (50) NULL,
  12.                [ExActual] [FLOAT] NULL,
  13.                [Cant] [FLOAT] NULL,
  14.                [Precio] [FLOAT] NULL,
  15.                [Utilidad] [FLOAT] NULL,
  16.                [Costo] [FLOAT] NULL,
  17.                [EsUnid] INT NULL,
  18.        ) ON [PRIMARY]
  19.        ALTER TABLE [dbo].[TMP_TRANRESPROD] WITH NOCHECK ADD
  20.        CONSTRAINT [IX_TMP_TRANRESPROD] UNIQUE  NONCLUSTERED
  21.        (
  22.          [ID],
  23.          [CodTabla],
  24.          [CodItem]
  25.        ) ON [PRIMARY]
  26. END
  27. DECLARE @varCodUser VARCHAR(100)
  28. SET @varCodUser = 'PERSONAL'
  29. DELETE FROM TMP_TRANRESPROD WHERE CodTabla = @varCodUser
  30. INSERT INTO TMP_TRANRESPROD
  31. SELECT @varCodUser,
  32.      SI.CodItem,
  33.      SI.Descrip1,
  34.      ISNULL((SELECT Unidad FROM SAPROD WHERE CodProd = SI.CodItem),'')  AS Unidad,
  35.      ISNULL((SELECT Existen FROM SAPROD WHERE CodProd = SI.CodItem),0.00)  AS ExActual,
  36.      SI.Cantidad*SI.CantMayor*B.Signo AS Cant,
  37.      B.Signo* SI.Cantidad*SI.CantMayor*(SI.Precio -
  38.      (B.Descto1 + B.Descto2)*SI.Precio/B.Monto+
  39.      B.Fletes*SI.Precio/B.Monto) AS Precio,
  40.      B.Signo*SI.Cantidad*SI.CantMayor*(SI.Precio -
  41.      (B.Descto1 + B.Descto2)*SI.Precio/B.Monto+
  42.      B.Fletes*SI.Precio/B.Monto) -
  43.      B.Signo*SI.Cantidad*SI.CantMayor*SI.Costo AS Utilidad,
  44.      B.Signo*SI.Cantidad*SI.CantMayor*SI.Costo AS Costo,
  45.      SI.EsUnid
  46. FROM SAITEMFAC SI, SAFACT B
  47.  WHERE (B.FechaE >= @inicio AND B.FechaE <= @fin)  AND (B.TipoFac = 'A' OR B.TipoFac = 'B')  AND B.Monto <> 0
  48.      AND SI.NroLineaC = 0 AND SI.EsUnid = 0
  49.      AND (SI.NumeroD = B.NumeroD AND SI.TipoFac = B.TipoFac)
  50. ORDER BY SI.CodItem
  51. SELECT CASE t.EsUnid WHEN 0 THEN ''
  52.       WHEN 1 THEN '!'
  53. END + t.CodItem AS CodItem,
  54.  ISNULL((SELECT Descrip FROM SAPROD WHERE CodProd = t.CodItem),ISNULL((SELECT Descrip FROM SASERV WHERE CodServ = t.CodItem),''))  AS Descrip1,
  55.  t.Unidad,
  56.  (SELECT DISTINCT ti.ExActual FROM TMP_TRANRESPROD ti WHERE ti.CodItem = t.CodItem AND ti.EsUnid = t.EsUnid AND CodTabla = @varCodUser) AS ExActual,
  57.      SUM(t.Cant) AS TotCant,
  58.      SUM(t.Precio) AS TotPrecio,
  59.      SUM(t.Costo) AS TotCosto,
  60.      SUM(t.Utilidad) AS TotalUtil
  61. FROM TMP_TRANRESPROD t
  62. WHERE (SELECT SUM(ti.Cant) FROM TMP_TRANRESPROD ti WHERE ti.CodItem = t.CodItem AND CodTabla = @varCodUser GROUP BY CodItem) <> 0 AND t.CodTabla = @varCodUser
  63. GROUP BY t.CodItem, t.Unidad, t.EsUnid
  64. ORDER BY t.CodItem

Última edición por gnzsoloyo; 05/11/2014 a las 09:23
  #7 (permalink)  
Antiguo 03/11/2014, 15:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

ok, y ahi cuales son los linked servers, como hiciste en linked server???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 03/11/2014, 15:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 68
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

donde dice CREATE TABLE localhost.origen.[dbo].[TMP_TRANRESPROD].

el localhost es un servidor vinculado. Esta tabla TMP_TRANRESPROD es la q quiero pasar para el destino.
  #9 (permalink)  
Antiguo 03/11/2014, 15:54
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

veamos, ¿quieres crear una tabla en el LINKED SERVER?, ¿tienes permisos?
__________________
MCTS Isaias Islas
  #10 (permalink)  
Antiguo 03/11/2014, 15:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

y ya diste de alta el servidor vinculado?? o lo quieres hacer asi porque se te ocurrio??? ademas el servidor vinculado no es localhost, es el nombre de la instancia de sql server........
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 03/11/2014, 15:57
Avatar de murdoc92  
Fecha de Ingreso: mayo-2012
Ubicación: Santiago
Mensajes: 58
Antigüedad: 12 años
Puntos: 3
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

Crea un procedimiento almacenado en una base de datos (A) y ejecutalo en una base de datos linkeada (B)

Acá sale como ejecutar procedimiento almacenados remotos
http://blog.sqlauthority.com/2007/10/06/sql-server-executing-remote-stored-procedure-calling-stored-procedure-on-linked-server/
__________________
Erick Muñoz | Analista Programador Integral.
www.tamper.cl | Comunidad de informáticos de Chile
www.facebook.com/erick.munozsalinas
  #12 (permalink)  
Antiguo 03/11/2014, 16:13
 
Fecha de Ingreso: febrero-2005
Mensajes: 68
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

voy a transformar esa consulta en un procedimiento almacenado y hare las pruebas. Gracias
  #13 (permalink)  
Antiguo 03/11/2014, 16:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

aqui hay que empezar agregando el linked server:

1er paso

Luego podemos crear una tabla:

2do paso

ahora insertamos en esa tabla:

mira aqui

y si te das cuenta es muy diferente a como lo estas planteando en tu query
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 04/11/2014, 19:41
 
Fecha de Ingreso: febrero-2005
Mensajes: 68
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

Estuve haciendo las pruebas y me da varios errores.

(0 filas afectadas)
El proveedor OLE DB "SQLNCLI11" del servidor vinculado "xxxx" devolvió el mensaje "The transaction manager has disabled its support for remote/network transactions.".
Mens. 7391, Nivel 16, Estado 2, Línea 9
No se pudo realizar la operación porque el proveedor OLE DB "SQLNCLI11" del servidor vinculado "xxx" no pudo iniciar una transacción distribuida.

Pregunto no habrá algún método mas fácil para hacer eso?
  #15 (permalink)  
Antiguo 05/11/2014, 08:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

estas usando la forma sencilla, pero aqui el problema es que no dices versiones de los servidores que quieres vincular, no sabemos como hiciste la vinculacion, y el error que muestras parece ser error de configuracion en alguno de los servidores, pero por suerte google que todo lo sabe dice que puedes hacer esto:

http://www.sqlservercentral.com/Foru...122-146-1.aspx

revisa ese post ahi viene una posible solucion a tu problema......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: remoto, sql
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 12:46.