05/05/2004 - 11:38 por Miguel Puime | Informe spam
Hola a todos:
Os cuento lo que quiero hacer:
Tengo 2 Bases de Datos: BD1 y BD2 con tablas distintas en cada una.
Puedo hacer un procedimiento almacenado en DB1 que lea una tabla de DB2?????

Ejem: en BD1
CREATE PROCEDURE spNPacientes
SELECT count(*) FROM DB2.Tabla

Gracias de antemando.
Miguel Puime.

Preguntas similare

Leer las respuestas

#1 Adrian D. Garcia
05/05/2004 - 12:01 | Informe spam
Si, pero la sintaxis que estas utilizando no es la correcta.
Para referenciar una tabla de otra base de datos debes utilizar la siguiente
sintaxis para identificar la tabla

<base de datos>..<tabla>
<base de datos>.dbo.<tabla>
<base de datos>.<login>.tabla

Las 2 primeras opciones son similares, leen la tabla con permisos del dueño
del objeto. Esto funciona siempre y cuando el login con que fue creado el
procedimiento almacenado tenga permisos de dbo ([d]ata [b]ase [o]wner -
dueño de la base de datos) sobre la tabla que quieras leer. Si no es asi
entonces debes utilizar la tercera forma en donde defines el login, con los
permisos suficientes como para leer la tabla.


Saludos

Adrian D. Garcia
NDSoft
MCSD
"Miguel Puime" escribió en el mensaje
news:
Hola a todos:
Os cuento lo que quiero hacer:
Tengo 2 Bases de Datos: BD1 y BD2 con tablas distintas en cada una.
Puedo hacer un procedimiento almacenado en DB1 que lea una tabla de


DB2?????

Ejem: en BD1
CREATE PROCEDURE spNPacientes
SELECT count(*) FROM DB2.Tabla

Gracias de antemando.
Miguel Puime.


Respuesta Responder a este mensaje
#2 Javier Loria
05/05/2004 - 12:03 | Informe spam
Hola Miguel:
Los objetos en SQL se nombran con 4 partes:
Servidor.BaseDatos.Propietario.Objecto
Y cuando el objeto no tiene el nombre completo se rellenan con defaults
de izquierda a derecha los faltantes.
Es tu caso la consulta deberia ser:
= SELECT COUNT(*) FROM DB2.dbo.Tabla
= O su forma abreviada
= SELECT COUNT(*) FROM DB2..Tabla
= Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Miguel Puime escribio:
Hola a todos:
Os cuento lo que quiero hacer:
Tengo 2 Bases de Datos: BD1 y BD2 con tablas distintas en cada
una. Puedo hacer un procedimiento almacenado en DB1 que lea una tabla
de DB2?????

Ejem: en BD1
CREATE PROCEDURE spNPacientes
SELECT count(*) FROM DB2.Tabla

Gracias de antemando.
Miguel Puime.
Respuesta Responder a este mensaje
#3 Miguel Puime
05/05/2004 - 20:48 | Informe spam
Gracias a los dos, problema solucionado.


"Miguel Puime" escribió en el mensaje
news:
Hola a todos:
Os cuento lo que quiero hacer:
Tengo 2 Bases de Datos: BD1 y BD2 con tablas distintas en cada una.
Puedo hacer un procedimiento almacenado en DB1 que lea una tabla de


DB2?????

Ejem: en BD1
CREATE PROCEDURE spNPacientes
SELECT count(*) FROM DB2.Tabla

Gracias de antemando.
Miguel Puime.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida