Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Consulta da varios servidores (https://www.clubdelphi.com/foros/showthread.php?t=52606)

lgarcia 25-01-2008 19:55:26

Consulta da varios servidores
 
Hola listeros:

Tengo una duda acerca de como realizar una consulta que comprometa a varios servidores. Por ejemplo hice esto

Código:

CREATE PROCEDURE DatosDepositos
 @tienda int,
 @fecha1 datetime,
 @fecha2 datetime
AS
SELECT Sala.dbo.Bolsos.numero, CONVERT(VARCHAR(10), Depositos.fecha, 103) as fechadeposito, 
              CONVERT(VARCHAR(10), Sala.dbo.Bolsos.fecha_conteo, 103) as fechaconteo,
              Tienda.dbo.Depositos.importe as declarado, Sala.dbo.Detalles.gravamen as contado
FROM Sala.dbo.Bolsos INNER JOIN
          Sala.dbo.Bolso_Detalles ON Sala.dbo.Bolsos.id = Sala.dbo.Bolso_Detalles.idbolso INNER JOIN
          Sala.dbo.Detalles ON Sala.dbo.Bolso_Detalles.iddetalles = Sala.dbo.Detalles.id INNER JOIN
          Tienda.dbo.Depositos ON Sala.dbo.Bolsos.numero = Tienda.dbo.Depositos.numero
WHERE tienda = @tienda and Tienda.dbo.Depositos.fecha between @fecha1 and @fecha2
ORDER BY Depositos.fecha ASC
GO

Donde Tienda esta en un servidor y Sala esta en otro servidor

Probe a poner le el nombre del servidor delante Ej Servidor1.Sala.dbo.Detalles.id
y me da el error de que Servidor1.Sala.dbo.Detalles contiene mas que el numero maximo de prefijos (3)

Trabajo con MSSQL Server2000.

Espero haberme explicado bien.

Saludos

Luis Garcia

poliburro 25-01-2008 21:01:50

Es super sencillo, solo tienes que linkear los servidores en el servidor donde estarás generando los procedimientos.

en
administrador corporativo /
Sql Server Group /
Servidor /
Seguridad /
Servidores Vinculados

lgarcia 25-01-2008 22:19:48

Consulta de varios servidores
 
Muchas gracias poliburro por la respuesta, ya llegue ahi y pude linkear ese servidor, pero como hago ahora para referenciar ese servidor en el SP, o sea

Código:

FROM Sala.dbo.Bolsos INNER JOIN
          Sala.dbo.Bolso_Detalles ON Sala.dbo.Bolsos.id = Sala.dbo.Bolso_Detalles.idbolso INNER JOIN
          Sala.dbo.Detalles ON Sala.dbo.Bolso_Detalles.iddetalles = Sala.dbo.Detalles.id INNER JOIN
          Tienda.dbo.Depositos ON Sala.dbo.Bolsos.numero = Tienda.dbo.Depositos.numero
WHERE tienda = @tienda and Tienda.dbo.Depositos.fecha between @fecha1 and @fecha2

Dado que Sala sea el del servidor donde estoy generando el SP, como referencio el Servidor Linkeado para Tienda.

Muchas gracias

Saludos

Luis Garcia

poliburro 26-01-2008 04:56:29

es super sencillo

Select *
From Servidor.BaseDeDatos.Propietario.Tabla


Así:

Select *
From Tienda.BaseDeDatos.Dbo.Depositos

lgarcia 28-01-2008 18:11:57

Consulta de varios servidores
 
Hola:

Poliburro muchas gracias por las respuestas pero me sigue dando el error
Servidor1.Sala.dbo.Detalles contiene mas que el numero maximo de prefijos (3)

que estoy haciendo mal pues segun tu referencia anterior
Código:

Select *
From Servidor.BaseDeDatos.Propietario.Tabla

debia bastar

Saludos

Luis Garcia

luisgutierrezb 28-01-2008 19:02:42

si mal no recuerdo ese error te lo da para cuando haces referencia a los campos yo te rcomiendo que uses alias, para que sea algo asi:

Código SQL [-]
Select TablaAlias.campo 
from Servidor.BaseDeDatos.Propietario.Tabla as TablaAlias

poliburro 28-01-2008 20:41:24

Cita:

Empezado por lgarcia (Mensaje 261589)
Hola:

Poliburro muchas gracias por las respuestas pero me sigue dando el error
Servidor1.Sala.dbo.Detalles contiene mas que el numero maximo de prefijos (3)

que estoy haciendo mal pues segun tu referencia anterior
Código:

Select *
From Servidor.BaseDeDatos.Propietario.Tabla

debia bastar

Saludos

Luis Garcia


Podrías indicarme como linkeaste el servidor?

espericueta 29-01-2008 00:29:49

hola que tal tambien puedes consultar por medio de openrowset

select columna1,columna2 from OPENROWSET('SQLOLEDB','nombre_servidor';'usuario';'contraseña','select * from tabla x where .......... --Consulta')
Where ......

en la ayuda de sql server viene informacion sobre openrowset y opendatasource te pueden servir

__hector 29-01-2008 19:52:47

Creo haber tenido este problema antes, y tuvo que ver con asignar algunos permisos, o configurar algo en el MSDTC (Distributed Transaction Coordinator). Seguro que en google encuentras respuestas al respecto, y lamento no poder darte directamente la respuesta, pues ese problema lo tuve hace varios años ya.


La franja horaria es GMT +2. Ahora son las 04:58:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi