VB.NET y SqlServer. Leer foreign keys

08/02/2008 - 14:46 por L. Garcia | Informe spam
Hola grupos:

Estoy buscando informacion para poder leer desde VB.NET la informacion de
ForeignKeys definidas en SqlServer. Estoy muy torpe pero no encuentro nada
que me sirva en Google (tambien tengo que reconocer que mi ingles es
basico).

¿ Alguna ayuda ?

Lo que busco hacer es que me pasen una tabla, y obtener todas las tablas
relacionadas por foreign keys con esta, y que ya están definidas en
SqlServer, ¿ es posible hacer esto ?

Saludos y gracias.

Preguntas similare

Leer las respuestas

#1 Maxi
08/02/2008 - 16:15 | Informe spam
Hola, revisa el store procedure

EXEC sp_fkeys @pktable_name = N'Part'


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"L. Garcia" escribió en el mensaje
news:%23LOI%
Hola grupos:

Estoy buscando informacion para poder leer desde VB.NET la informacion de
ForeignKeys definidas en SqlServer. Estoy muy torpe pero no encuentro nada
que me sirva en Google (tambien tengo que reconocer que mi ingles es
basico).

¿ Alguna ayuda ?

Lo que busco hacer es que me pasen una tabla, y obtener todas las tablas
relacionadas por foreign keys con esta, y que ya están definidas en
SqlServer, ¿ es posible hacer esto ?

Saludos y gracias.


Respuesta Responder a este mensaje
#2 Alejandro Mesa
08/02/2008 - 17:26 | Informe spam
L. Garcia,

Si te estas conectando a SQL Server 2005, use el sgte script. Si te estas
conectando a 2000, entonces elimina las columnas [FK_CONSTRAINT_COLUMNS] y
[PK_UQ_CONSTRAINT_COLUMNS], que es una cadena con el nombre de las columnas
que conforman la clave de la restriccion de clave foranea y la clave primaria
de la entidad padre.

USE Northwind
go

DECLARE @ts sysname
DECLARE @tn sysname

SET @ts = 'dbo'
SET @tn = 'Employees'

SELECT
tc.TABLE_SCHEMA,
tc.TABLE_NAME,
rc.CONSTRAINT_NAME,
STUFF(
(
SELECT
',' + kcu.COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS kcu
WHERE
kcu.TABLE_CATALOG = tc.TABLE_CATALOG
AND kcu.TABLE_SCHEMA = tc.TABLE_SCHEMA
AND kcu.TABLE_NAME = tc.TABLE_NAME
AND kcu.CONSTRAINT_CATALOG = tc.CONSTRAINT_CATALOG
AND kcu.CONSTRAINT_SCHEMA = tc.CONSTRAINT_SCHEMA
AND kcu.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
ORDER BY
kcu.ORDINAL_POSITION
FOR XML PATH('')
), 1, 1, '') AS [FK_CONSTRAINT_COLUMNS],
pc.TABLE_SCHEMA,
pc.TABLE_NAME,
rc.UNIQUE_CONSTRAINT_NAME,
STUFF(
(
SELECT
',' + kcu.COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS kcu
WHERE
kcu.TABLE_CATALOG = pc.TABLE_CATALOG
AND kcu.TABLE_SCHEMA = pc.TABLE_SCHEMA
AND kcu.TABLE_NAME = pc.TABLE_NAME
AND kcu.CONSTRAINT_CATALOG = pc.CONSTRAINT_CATALOG
AND kcu.CONSTRAINT_SCHEMA = pc.CONSTRAINT_SCHEMA
AND kcu.CONSTRAINT_NAME = pc.CONSTRAINT_NAME
ORDER BY
kcu.ORDINAL_POSITION
FOR XML PATH('')
), 1, 1, '') AS [PK_UQ_CONSTRAINT_COLUMNS]
FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS rc
INNER JOIN
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE AS tc
ON rc.CONSTRAINT_CATALOG = tc.CONSTRAINT_CATALOG
AND rc.CONSTRAINT_SCHEMA = tc.CONSTRAINT_SCHEMA
AND rc.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
INNER JOIN
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE AS pc
ON pc.CONSTRAINT_CATALOG = rc.UNIQUE_CONSTRAINT_CATALOG
AND pc.CONSTRAINT_SCHEMA = rc.UNIQUE_CONSTRAINT_SCHEMA
AND pc.CONSTRAINT_NAME = rc.UNIQUE_CONSTRAINT_NAME
WHERE
pc.TABLE_CATALOG = DB_NAME()
AND pc.TABLE_SCHEMA = @ts
AND pc.TABLE_NAME = @tn
GO


AMB


"L. Garcia" wrote:

Hola grupos:

Estoy buscando informacion para poder leer desde VB.NET la informacion de
ForeignKeys definidas en SqlServer. Estoy muy torpe pero no encuentro nada
que me sirva en Google (tambien tengo que reconocer que mi ingles es
basico).

¿ Alguna ayuda ?

Lo que busco hacer es que me pasen una tabla, y obtener todas las tablas
relacionadas por foreign keys con esta, y que ya están definidas en
SqlServer, ¿ es posible hacer esto ?

Saludos y gracias.



Respuesta Responder a este mensaje
#3 L. Garcia
12/02/2008 - 09:14 | Informe spam
Hola:

Gracias por vuestras respuestas, que me han servido y mucho para conseguir
lo que queria, y en esta respuesta en particular, para aprender el truco del
STUFF(), ahora solo falta que lo entienda ;-)))

Saludos

"Alejandro Mesa" escribió en...
L. Garcia,

Si te estas conectando a SQL Server 2005, use el sgte script. Si te estas
conectando a 2000, entonces elimina las columnas [FK_CONSTRAINT_COLUMNS] y
[PK_UQ_CONSTRAINT_COLUMNS], que es una cadena con el nombre de las


columnas
que conforman la clave de la restriccion de clave foranea y la clave


primaria
de la entidad padre.

USE Northwind
go

DECLARE @ts sysname
DECLARE @tn sysname

SET @ts = 'dbo'
SET @tn = 'Employees'

SELECT
tc.TABLE_SCHEMA,
tc.TABLE_NAME,
rc.CONSTRAINT_NAME,
STUFF(
(
SELECT
',' + kcu.COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS kcu
WHERE
kcu.TABLE_CATALOG = tc.TABLE_CATALOG
AND kcu.TABLE_SCHEMA = tc.TABLE_SCHEMA
AND kcu.TABLE_NAME = tc.TABLE_NAME
AND kcu.CONSTRAINT_CATALOG = tc.CONSTRAINT_CATALOG
AND kcu.CONSTRAINT_SCHEMA = tc.CONSTRAINT_SCHEMA
AND kcu.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
ORDER BY
kcu.ORDINAL_POSITION
FOR XML PATH('')
), 1, 1, '') AS [FK_CONSTRAINT_COLUMNS],
pc.TABLE_SCHEMA,
pc.TABLE_NAME,
rc.UNIQUE_CONSTRAINT_NAME,
STUFF(
(
SELECT
',' + kcu.COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS kcu
WHERE
kcu.TABLE_CATALOG = pc.TABLE_CATALOG
AND kcu.TABLE_SCHEMA = pc.TABLE_SCHEMA
AND kcu.TABLE_NAME = pc.TABLE_NAME
AND kcu.CONSTRAINT_CATALOG = pc.CONSTRAINT_CATALOG
AND kcu.CONSTRAINT_SCHEMA = pc.CONSTRAINT_SCHEMA
AND kcu.CONSTRAINT_NAME = pc.CONSTRAINT_NAME
ORDER BY
kcu.ORDINAL_POSITION
FOR XML PATH('')
), 1, 1, '') AS [PK_UQ_CONSTRAINT_COLUMNS]
FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS rc
INNER JOIN
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE AS tc
ON rc.CONSTRAINT_CATALOG = tc.CONSTRAINT_CATALOG
AND rc.CONSTRAINT_SCHEMA = tc.CONSTRAINT_SCHEMA
AND rc.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
INNER JOIN
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE AS pc
ON pc.CONSTRAINT_CATALOG = rc.UNIQUE_CONSTRAINT_CATALOG
AND pc.CONSTRAINT_SCHEMA = rc.UNIQUE_CONSTRAINT_SCHEMA
AND pc.CONSTRAINT_NAME = rc.UNIQUE_CONSTRAINT_NAME
WHERE
pc.TABLE_CATALOG = DB_NAME()
AND pc.TABLE_SCHEMA = @ts
AND pc.TABLE_NAME = @tn
GO


AMB


"L. Garcia" wrote:

> Hola grupos:
>
> Estoy buscando informacion para poder leer desde VB.NET la informacion


de
> ForeignKeys definidas en SqlServer. Estoy muy torpe pero no encuentro


nada
> que me sirva en Google (tambien tengo que reconocer que mi ingles es
> basico).
>
> ¿ Alguna ayuda ?
>
> Lo que busco hacer es que me pasen una tabla, y obtener todas las tablas
> relacionadas por foreign keys con esta, y que ya están definidas en
> SqlServer, ¿ es posible hacer esto ?
>
> Saludos y gracias.
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida