¿Cómo puedo sacar la relación de unas tablas hechas en SQL server?

Como puedo sacar la relación de unas tablas echas en sql server.es que soy nueva en mi lugar de trabajo y nadie me puede aportar dicha información. Así que imaginate el follón cuando quiero trabajar con ellas!
Muchas gracias

1 respuesta

1
Respuesta de
Hola Carmenchu,
Si deseas saber si dos tablas tienen una relación implementada (que no siempre es así), lo más fácil es acudir al SQL Enterprise Manager y seleccionar la tabla que desees de la base de datos donde se encuentre.
Una vez en ella, pincha con el botón derecho en la tabla y selecciona "Design table", en esta pantalla existen una serie de botones arriba, el antepenúltimo ("Manage relationship...") te da la información sobre relaciones con otras tablas.
También puedes ver las relaciones de una tabla con todo de una sola vez pulsando con el botón derecho sobre ella, seleccionando "All Tasks" y "Display Dependencies"
Espero haber ayudado.
Un saludo. Iñaki.
¿Si pero no podría coger y que me muestre la relación inmediata de todos las tablas? ¿Es qué tengo alrededor de 100 tablas e ir una por una es un poco coñazo no?
Gracias
Con la siguiente Query puedes ver la relación entre las tablas (sin saber los campos), modifícala a tu gusto con los "order by" o restricciones para ver lo que necesites.
SELECT SubString(nombre.name, 1, 30) AS 'Nombre de la Referencia',
SubString(origen.name, 1, 30) AS 'Tabla Origen',
SubString(destino.name, 1, 30) AS 'Tabla Destino'
FROM sysobjects AS origen, sysobjects AS destino,
sysobjects AS nombre, sysforeignkeys AS referencia
WHERE referencia.constid = nombre.id
AND referencia.fkeyid = origen.id
AND referencia.rkeyid = destino.id
Si necesitas ampliar la información y necesitas apoyo dímelo, veré de donde sacar lo que necesites.
Un saludo.
¿Pero aquí simplemente se hace referencia a la relación que hay entre dos tablas solamente no? Es que la base de datos posee cerca de ciento y pico tablas y seria mucho más sencillo si huebiese una sentencia o un comando que me mostrara todas las dependencias (relaciones) de todas la tablas. Gracias.
La query te da las relaciones físicas entre TODAS las tablas.
Si la has ejecutado y no te da lo que esperas, quizás las relaciones no están creadas. Accede a una tabla que creas que tiene la relación y compruébala siguiendo los pasos que di inicialmente. Si no esta, es que las relaciones son lógicas, con lo cual tendrás que acudir a la documentación de quien creó la base de datos.
Un saludo.
Lo malo de todo esto es que quien puede darme toda esa documentación no esta por la labor de ayudar y ya llevo un par de meses pidiéndole dicha relación pero no quiere.
¿La query que tu me has explicado se pone tal cual o ahí que adaptarla?
Gracias
La query se pone tal cual, bueno siempre y cuando estés en la base de datos que te interese.
¿Qué le pica al tio/a que realizó la base de datos? ¿Cree qué es dios/a y no se puede vivir sin el/ella?
¡ Estas cosas me ponen de los nervios !
Si necesitas una ayuda más profunda puedes contar conmigo para extraer los datos y la información que necesites directamente de la base de datos.
es un gilí... hablando mal y pronto! Es que resulta que esta un poco picao porque ya no vamos a trabajar más con ellos debido a que vamos a incorporar sap.
Osea que por eso no esta muy por la labor.
¿Bueno voy a probar y ahora te cuento ok?
Si es que hay cada uno...
Si prefieres seguir la conversación por e-mail, cierra esta consulta y escríbeme a:
imorenohojas@yahoo.es
¿Oye esta sentencia la podría ejecutar en access? Es por hacer una prueba! Es por no ir a donde tengo el sqlserver instalado, y hacerlo directamente en mi máquina con un pequeño ejemplo.
Claro que si, solo tienes que vincular las tablas que se usan:
- sysobjects
- sysforeignkeys
Y realizar la consulta.
¿Pero cómo las vinculo?
¿He probado a hacer la sentencia que me has dicho pero al ejecutarla me da un error en el from en sysforeignkeys porque puede ser?
Crea una conexión ODBC contra la base de datos:
- Inicio, Panel de control.
- NT: Orígenes de datos(ODBC)
- 2000: Herramientas administrativas/Origenes de datos(ODBC)
- Selecciona la pestaña "System DSN"
- Pulsa "Add..."
- Selecciona el driver de SQLServer
- Pon el nombre que desees y en la caja de "Server" el nombre o IP del servidor de base de datos.
- Pulsa "Siguiente".
- Selecciona la autentificación introducida por usuario.
- Introduce el usuario y la password.
- Pulsa "Siguiente".
- Cambia la base de datos a la cual te quieres conectar.
- Pulsa "Finalizar".
Crea una base de datos Access en blanco.
- En el menú selecciona "Archivo/Obtener datos externos/Vincular tablas..."
- Selecciona en "Tipo de archivo" "ODBC Databases"
- En la etiqueta "Machine Data Source" selecciona el nombre que diste en la conexión ODBC.
- Introduce el login y la password y pulsa en "Aceptar".
- Selecciona todas las tablas que deseas vincular y pulsa "Aceptar".
Creo que no me dejo nada, si tienes algún problema, dímelo.
¿E probado en el servidor donde tengo el sqlserver
pero al ejecutarla me da un error en el from en sysforeignkeys porque puede ser?
La consulta la he probado en mi SQLServer y funciona correctamente...
Envíame más datos (texto del error) para intentar saber el porque no te funciona.
Mira iñaki el mensaje es este:
msg 208, level 16, state 1
invalid object name 'sysforeignkeys'.
Ese es el dichoso mensajito.
¿?
No entiendo como no va a existir "sysforeignkeys" si existe en TODAS las bases de datos.
Conéctate a la base de datos que te interesa mediante el SQL Server Enterprise Manager y busca la tabla "sysforeignkeys" o cualquier otra tabla que empiece por "sys".
Si no ves ninguna, es que el usuario con que te has conectado no tiene privilegios para ver esas tablas (cosa curiosa porque casi siempre lo tiene). Si es así tienes que conectarte con algún usuario que tenga estos privilegios (administrador u otro creado explícitamente).
Por si acaso he ejecutado la consulta en un SQLServer 7.x (lo estaba haciendo en un SQLServer 2000) y también es correcta.
joba! Si lo curioso es que estoy como administrador!
No e ido a probar por eso ! Porque yo siempre entro como administrador osea que tengo todos los privilegios!
Esto es ya pa morirse!
¡¿?!
No entiendo nada. Es todo correcto.
Si quieres puedes crear un script de la base de datos:
- Botón derecho en la base de datos, "Todas las tareas" y "Generate SQL Scripts"
Y enviármelo al mail que te dí antes, yo me creo la base de datos y te envío lo que necesitas (si es que no desaparece la famosita tabla)
No se me ocurre otra solución.
Esto es de locos, no puede desaparecer esa tabla...
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema SQL Server o hacer tu propia pregunta: