no muestra las dependencias entre distintas bases de datos

18/05/2004 - 10:04 por Mara | Informe spam
Hola a todos:

mi problema el descrito arriba

tengo un sql-server con un grupo de bases de datos y con multiples
relaciones estre vistas y procedimientos de una base de datos con tablas y
vistas de otra base de datos

al intentar buscar las dependencias, no me encuentra si la tabla es
utilizada en otra base de datos

es normal?, hay forma de solucionarlo?


gracias

Preguntas similare

Leer las respuestas

#6 Mara
19/05/2004 - 13:25 | Informe spam
Hola,

la idea de haber creado varias bases de datos es por mantener las distintas
partes del sistema separadas,
tengo una base de datos para los clientes (tabla para los nombre, otra para
los grupos, otra para que tipo de clientes pueden ser, etc...), otra para
los productos (una para los nombres-codigos-caracteristicas, otra para los
precios por año, otra para la relacion entre productos nuestros y de l a
competencia), y asi otras para los competidores, para las inserciones desde
una aplicacion WEB, otra (solo vistas) para la exportacion a otros sistemas,
etc..

de esta forma tengo 8 o 9 bases de datos con entre 15-25 tablas/vistas cada
una, y no una con 200

esa fue mi idea de hacer varias bases de datos, si es acertada o no, no lo
se, he sido autodidacta en SQL server y por o tanto me perdi el capitulo de
"buenas costumbres", sobra decir que acepto sugerencias e ideas



sobre el codigo que me propones, con esto me bastaria, el saber que
vistas/procedures utilizan una tabla/vista, pero una pregunta:
para una tabla tal que:

basedatosA.dbo.tablaejemplo

podria correr el siguiente codigo en el "Query analizer" ?



EXEC SP_MSforeachDb 'USE ? IF OBJECT_ID(''basedatosA.dbo.tablaejemplo'') IS
NOT NULL BEGIN
EXEC sp_depends ''basedatosA.dbo.tablaejemplo'' END '




(aun no soy muy familiar con ello)



gracias por el tiempo empleado




"Javier Loria" wrote in message
news:%
Hola:
No comparto mucho tu diseno, pero tampoco entiendo completamente el
problema que te llevo a manejar multiples bases de datos.
Puede ser que algo como:
> EXEC SP_MSforeachDb 'USE ? IF OBJECT_ID(''?..Authors'') IS NOT NULL BEGIN
EXEC sp_depends ''Authors '' END '
> Te sirva, pero claro no es en forma grafica. y debes reeemplazar


Authors
por tus Tablas.
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.
Mara escribio:
> Hola de nuevo:
>
> mi objetivo no es ese, es mucho mas sencillo
>
> el hecho de tener diferentes bases de datos es para una mejor
> organizacion, por ejemplo la informacion maestra se guarda en una de
> ellas y otra me sirve como interface para una aplicacion web que
> inserta nuevos clientes y aqui guardo temporalmente hasta que valido
> y paso a la maestra
>
> las relaciones entre distintas bases estan hechas siempre con vistas,
> lo que cambie en la tabla, cambiara en la vista automaticamente
>
> mi principal problema, es saber que tablas/vistas estan utilizadas y
> donde, hasta ahora mi unico remedio ha sido revisando el codigo, pero
> el conjunto de bases de datos empieza a crecer y dicha busqueda se
> hace muy pesada
>
> es decir: sobre una tabla/vista, boton derecho, all task -> display
> dependencies
>
>
> quizas exista otra forma de obtener del sistema una imagen o un grafo
> que muestre que tablas/vistas/procedimientos dependen de cuales
>
> gracias por adelentado
>
>
> "Javier Loria" wrote in message
> news:uEl$G%
>> Hola Mara:
>> No existen Integridad Referencial Declarativa (relaciones
>> foraneas) entre diferentes Bases de Datos :(
>> La forma de solucionarno es tener todo en la misma Base de Datos
>> o en su defecto debes mantener la relaciones en forma procedimental,
>> esto es escribir triggers o procedimientos de mantenimiento de
>> Tablas que aseguren la integridad referencial.
>> 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.
>> Mara escribio:
>>> Hola a todos:
>>>
>>> mi problema el descrito arriba
>>>
>>> tengo un sql-server con un grupo de bases de datos y con multiples
>>> relaciones estre vistas y procedimientos de una base de datos con
>>> tablas y vistas de otra base de datos
>>>
>>> al intentar buscar las dependencias, no me encuentra si la tabla es
>>> utilizada en otra base de datos
>>>
>>> es normal?, hay forma de solucionarlo?
>>>
>>>
>>> gracias


Respuesta Responder a este mensaje
#7 Mara
19/05/2004 - 13:26 | Informe spam
conteste a Javier Loira a la misma pregunta


gracias


"Maxi" wrote in message
news:%
Hola no entiendo porque dividir asi la cosa?


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Mara" escribió en el mensaje
news:
> Hola de nuevo:
>
> mi objetivo no es ese, es mucho mas sencillo
>
> el hecho de tener diferentes bases de datos es para una mejor
organizacion,
> por ejemplo la informacion maestra se guarda en una de ellas y otra me
sirve
> como interface para una aplicacion web que inserta nuevos clientes y


aqui
> guardo temporalmente hasta que valido y paso a la maestra
>
> las relaciones entre distintas bases estan hechas siempre con vistas, lo
que
> cambie en la tabla, cambiara en la vista automaticamente
>
> mi principal problema, es saber que tablas/vistas estan utilizadas y
donde,
> hasta ahora mi unico remedio ha sido revisando el codigo, pero el


conjunto
> de bases de datos empieza a crecer y dicha busqueda se hace muy pesada
>
> es decir: sobre una tabla/vista, boton derecho, all task -> display
> dependencies
>
>
> quizas exista otra forma de obtener del sistema una imagen o un grafo


que
> muestre que tablas/vistas/procedimientos dependen de cuales
>
> gracias por adelentado
>
>
> "Javier Loria" wrote in message
> news:uEl$G%
> > Hola Mara:
> > No existen Integridad Referencial Declarativa (relaciones


foraneas)
> > entre diferentes Bases de Datos :(
> > La forma de solucionarno es tener todo en la misma Base de Datos o
en
> su
> > defecto debes mantener la relaciones en forma procedimental, esto es
> > escribir triggers o procedimientos de mantenimiento de Tablas que
aseguren
> > la integridad referencial.
> > 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.
> > Mara escribio:
> > > Hola a todos:
> > >
> > > mi problema el descrito arriba
> > >
> > > tengo un sql-server con un grupo de bases de datos y con multiples
> > > relaciones estre vistas y procedimientos de una base de datos con
> > > tablas y vistas de otra base de datos
> > >
> > > al intentar buscar las dependencias, no me encuentra si la tabla es
> > > utilizada en otra base de datos
> > >
> > > es normal?, hay forma de solucionarlo?
> > >
> > >
> > > gracias
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.676 / Virus Database: 438 - Release Date: 04/05/2004


Respuesta Responder a este mensaje
#8 ulises
19/05/2004 - 15:21 | Informe spam
No, en primer lugar sp_depends solo te da información
sobre los objetos dentro de tu propia base de datos,
objetos que no se encuentran en tu BBDD no son
referenciados, y en segundo lugar sp_depends no acepta ese
el parámetro calificado, solo necesita el nombre del
objeto.

Por el momento la única forma que se me ocurre es que
busques la definición calificada de tu tabla dentro de la
columna "text" de la tabla sysdepends de todas tus bases
de datos.

Sobre lo importante: sí, es "buena costumbre" mantener
todos los objetos de tu aplicación comprendidos en una
misma base de datos, de esta forma puedes manejar mejor
las relaciones, los "constraints" y las referencias entre
las diferentes objetos.

Saludos,
Ulises

...


EXEC SP_MSforeachDb 'USE ? IF OBJECT_ID


(''basedatosA.dbo.tablaejemplo'') IS
NOT NULL BEGIN
EXEC sp_depends ''basedatosA.dbo.tablaejemplo'' END '
Respuesta Responder a este mensaje
#9 Javier Loria
19/05/2004 - 15:37 | Informe spam
Hola Mara:
En este caso creo que te recomendaria el reconsiderar una sola BD. Solo
para darte una idea, algunos de los ERP (Enterprise Resource Planning)
actuales tienen mas de 10,000 tablas. :(
En general la intencion de los desarolladores de SQL es representar la
activad de una empresa completa en una sola BD. Cuando divides la aplicacion
en varias te pierdes de varias cosas:
a) Integridad Referencial Declarativa: Las relaciones entre las tablas
cuando tienes una sola BD son naturales y faciles, cuando son entre BD son
artificiales, dificiles de construir y dificiles de mantener.
b) Seguridad: Cuando tienes una BD es mucho mas sencillo mantener la
seguridad de los usuarios, de primera entrada tener varias BD te requiere
mayores esfuerzos y controles. Sobre todo con las cadenas de propiedad.
c) Respaldos: Si la aplicacion en 24x7 los respaldos son pesadilla
porque es dificil mantenerlos sincronizados. Cuando respaldas 1 BD, las
otras ya cambiaron.
d) Conexiones: Si mantienes multiples BD debes manejar el contexto del
ususario con cuidado para saber cual es la BD actual, ya que podrias tener
problemas con nombres. Por supuesto los nombres son mucho mas largos.
Estas son las que se me ocurren de primera entrada, no se me ocurren
beneficion relevantes de tener multiples BD.

Sobre el codigo seria mas bien, ejecutar:
==EXEC SP_MSforeachDb 'USE ? IF OBJECT_ID(''VistaEjemplo'') IS NOT NULL BEGIN
EXEC sp_depends ''VistaEjemplo'' END '
Todo en la misma linea, esto es si tienes la VistaEjemplo definida en
cada BD te dara las dependencias que tega esta vista con los demas objetos.
Si NO TIENES la vista declarada en cada BD, entonces es un poco mas
dificile porque tienes que recurrir a las tablas de sistema, particularmente
tendrias que ir a syscomments buscar en la propiedad text (asumiendo que no
usas Stored Procedures encriptados) y generar el reporte, algo como:
==SELECT SYSOBJECTS.Name, syscomments.text
FROM SYSOBJECTS
JOIN SYSCOMMENTS
ON SYSOBJECTS.ID=SYSCOMMENTS.ID
WHERE SYSOBJECTS.XTYPE IN ('V','P','TF','IF','FN')
AND (TEXT LIKE '%BaseDatos.dbo.NombreTabla'
OR TEXT LIKE '%BaseDatos..NombreTabla')
== Esto lo puedes repetir en cada una de las BD, o incluso hacer una vista
y hacer un UNION ALL de todas:
Espero te sirva el codigo, pero te recomiendo reconsideres la desicion
de las multiples BD.
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.
Mara escribio:
Hola,

la idea de haber creado varias bases de datos es por mantener las
distintas partes del sistema separadas,
tengo una base de datos para los clientes (tabla para los nombre,
otra para los grupos, otra para que tipo de clientes pueden ser,
etc...), otra para los productos (una para los
nombres-codigos-caracteristicas, otra para los precios por año, otra
para la relacion entre productos nuestros y de l a competencia), y
asi otras para los competidores, para las inserciones desde una
aplicacion WEB, otra (solo vistas) para la exportacion a otros
sistemas, etc..

de esta forma tengo 8 o 9 bases de datos con entre 15-25
tablas/vistas cada una, y no una con 200

esa fue mi idea de hacer varias bases de datos, si es acertada o no,
no lo se, he sido autodidacta en SQL server y por o tanto me perdi el
capitulo de "buenas costumbres", sobra decir que acepto sugerencias e
ideas



sobre el codigo que me propones, con esto me bastaria, el saber que
vistas/procedures utilizan una tabla/vista, pero una pregunta:
para una tabla tal que:

basedatosA.dbo.tablaejemplo

podria correr el siguiente codigo en el "Query analizer" ?



EXEC SP_MSforeachDb 'USE ? IF
OBJECT_ID(''basedatosA.dbo.tablaejemplo'') IS NOT NULL BEGIN
EXEC sp_depends ''basedatosA.dbo.tablaejemplo'' END '




(aun no soy muy familiar con ello)



gracias por el tiempo empleado




"Javier Loria" wrote in message
news:%
Hola:
No comparto mucho tu diseno, pero tampoco entiendo completamente
el problema que te llevo a manejar multiples bases de datos.
Puede ser que algo como:
>> EXEC SP_MSforeachDb 'USE ? IF OBJECT_ID(''?..Authors'') IS NOT NULL
BEGIN EXEC sp_depends ''Authors '' END '
>> Te sirva, pero claro no es en forma grafica. y debes reeemplazar
Authors por tus Tablas.
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.
Mara escribio:
Hola de nuevo:

mi objetivo no es ese, es mucho mas sencillo

el hecho de tener diferentes bases de datos es para una mejor
organizacion, por ejemplo la informacion maestra se guarda en una de
ellas y otra me sirve como interface para una aplicacion web que
inserta nuevos clientes y aqui guardo temporalmente hasta que valido
y paso a la maestra

las relaciones entre distintas bases estan hechas siempre con
vistas, lo que cambie en la tabla, cambiara en la vista
automaticamente

mi principal problema, es saber que tablas/vistas estan utilizadas y
donde, hasta ahora mi unico remedio ha sido revisando el codigo,
pero el conjunto de bases de datos empieza a crecer y dicha
busqueda se
hace muy pesada

es decir: sobre una tabla/vista, boton derecho, all task -> display
dependencies


quizas exista otra forma de obtener del sistema una imagen o un
grafo que muestre que tablas/vistas/procedimientos dependen de
cuales

gracias por adelentado


"Javier Loria" wrote in message
news:uEl$G%
Hola Mara:
No existen Integridad Referencial Declarativa (relaciones
foraneas) entre diferentes Bases de Datos :(
La forma de solucionarno es tener todo en la misma Base de
Datos
o en su defecto debes mantener la relaciones en forma
procedimental, esto es escribir triggers o procedimientos de
mantenimiento de
Tablas que aseguren la integridad referencial.
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.
Mara escribio:
Hola a todos:

mi problema el descrito arriba

tengo un sql-server con un grupo de bases de datos y con multiples
relaciones estre vistas y procedimientos de una base de datos con
tablas y vistas de otra base de datos

al intentar buscar las dependencias, no me encuentra si la tabla
es utilizada en otra base de datos

es normal?, hay forma de solucionarlo?


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