VB.NET y SqlServer. Leer las relaciones entre tablas.

24/04/2008 - 17:24 por L. Garcia | Informe spam
Hola a todos:

Estoy leyendo y cargando tablas desde un servidor sqlserver, las cuales
tienen creada una relación en el propio servidor sqlserver. ¿ Como leer la
información de relaciones existentes en la base de datos SqlServer?

En mi aplicación, creo un DataSet, creo los adaptadores correspondientes
para las tablas y las añado y cargo con los datos existentes en el dataset,
pero a la hora de crear las relaciones no encuentro como hacerlo
automáticamente leyéndolas desde la base de datos. No me vale crearlas 'de
nuevo' en mi aplicación, quiero leer la información existente en la base de
datos.

He visto algo de leer la información de las vistas INFORMATION_SCHEMA.*,
pero lo veo 'demasiado complicado'. Creo que debe ser más fácil y que estoy
obviando algo, pero no se el qué.

Saludos y gracias por leer hasta aquí.

Preguntas similare

Leer las respuestas

#1 Alfredo Novoa
24/04/2008 - 17:41 | Informe spam
Hola,

On Thu, 24 Apr 2008 17:24:39 +0200, "L. Garcia"
wrote:


He visto algo de leer la información de las vistas INFORMATION_SCHEMA.*,
pero lo veo 'demasiado complicado'. Creo que debe ser más fácil y que estoy
obviando algo, pero no se el qué.



También puedes leer la vista sys.foreign_keys


Saludos
Respuesta Responder a este mensaje
#2 Gux (MVP)
24/04/2008 - 20:08 | Informe spam
Le recomiendo:

REFERENTIAL_CONSTRAINTS (Transact-SQL)
http://msdn2.microsoft.com/en-us/li...79987.aspx

Usted menciona que es demasiado complicado, díganos con más detalle qué es
lo que le resulta complicado de usar
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS y trataremos de aclararle las
dudas específicas.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"L. Garcia" wrote:

Hola a todos:

Estoy leyendo y cargando tablas desde un servidor sqlserver, las cuales
tienen creada una relación en el propio servidor sqlserver. ¿ Como leer la
información de relaciones existentes en la base de datos SqlServer?

En mi aplicación, creo un DataSet, creo los adaptadores correspondientes
para las tablas y las añado y cargo con los datos existentes en el dataset,
pero a la hora de crear las relaciones no encuentro como hacerlo
automáticamente leyéndolas desde la base de datos. No me vale crearlas 'de
nuevo' en mi aplicación, quiero leer la información existente en la base de
datos.

He visto algo de leer la información de las vistas INFORMATION_SCHEMA.*,
pero lo veo 'demasiado complicado'. Creo que debe ser más fácil y que estoy
obviando algo, pero no se el qué.

Saludos y gracias por leer hasta aquí.



Respuesta Responder a este mensaje
#3 L. Garcia
25/04/2008 - 10:05 | Informe spam
"Gux (MVP)" escribió en el mensaje
news:
Le recomiendo:

REFERENTIAL_CONSTRAINTS (Transact-SQL)
http://msdn2.microsoft.com/en-us/li...79987.aspx

Usted menciona que es demasiado complicado, díganos con más detalle qué es
lo que le resulta complicado de usar
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS y trataremos de aclararle las
dudas específicas.



Hola.

Cuando decía que era demasiado complicado me refería a que 'suponía que en
el FrameWork de .NET debería de haber alguna forma de leer esta información
directamente de la base de datos, sin tener que montar una consulta y crear
la relación en la aplicación .NET. Pero me parece que no va a ser así :-)

Como primera aproximación a la información que busco he creado esta
consulta, la expongo por si a alguien le interesa. Con esto creo que podré
reproducir dentro de mi aplicación .NET las relaciones existentes en
SqlServer.

Saludos y gracias por contestar.

SELECT TBL_ORIGEN.TABLE_NAME AS ORG_TBL, REL_FK.CONSTRAINT_NAME AS ORG_KEY,
TBL_REL.TABLE_NAME AS REL_TBL, /* REL_FK.UNIQUE_CONSTRAINT_NAME AS REL_PK,
*/
TBL_REL.CONSTRAINT_NAME AS REL_PK,
COL1.COLUMN_NAME, COL1.ORDINAL_POSITION,
COL2.COLUMN_NAME, COL2.ORDINAL_POSITION
FROM
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE AS TBL_ORIGEN
LEFT OUTER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS REL_FK
ON REL_FK.CONSTRAINT_CATALOG = TBL_ORIGEN.CONSTRAINT_CATALOG AND
REL_FK.CONSTRAINT_SCHEMA = TBL_ORIGEN.CONSTRAINT_SCHEMA AND
REL_FK.CONSTRAINT_NAME = TBL_ORIGEN.CONSTRAINT_NAME
LEFT OUTER JOIN INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE AS TBL_REL
ON TBL_REL.TABLE_CATALOG = REL_FK.CONSTRAINT_CATALOG AND
TBL_REL.TABLE_SCHEMA = REL_FK.CONSTRAINT_SCHEMA AND
TBL_REL.CONSTRAINT_NAME = REL_FK.UNIQUE_CONSTRAINT_NAME
LEFT OUTER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS COL1
ON COL1.CONSTRAINT_CATALOG = TBL_ORIGEN.TABLE_CATALOG AND
COL1.CONSTRAINT_SCHEMA = TBL_ORIGEN.TABLE_SCHEMA AND
COL1.CONSTRAINT_NAME = TBL_ORIGEN.CONSTRAINT_NAME
LEFT OUTER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS COL2
ON COL2.CONSTRAINT_CATALOG = TBL_REL.TABLE_CATALOG AND
COL2.CONSTRAINT_SCHEMA = TBL_REL.TABLE_SCHEMA AND
COL2.CONSTRAINT_NAME = TBL_REL.CONSTRAINT_NAME AND
COL2.ORDINAL_POSITION = COL1.ORDINAL_POSITION
/* LGS 25/04/2008. Registros REL_FK = Null => Informacion de PK Tabla Origen
*/
WHERE NOT REL_FK.CONSTRAINT_NAME IS NULL
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida