Ayer me estuve todo el día peleando en como conseguir sacar las relaciones, mediante Transac-SQL, de una base de datos Sql Server 2000. Seguramente para algun experto sería una tarea muy senzilla, pero para mi, un usuario poco avanzado fue una tarea bastante compliacada.

Tras trastear por las tablas de sistema, por fin conseguí una sentencia que me devolvía las relaciones. Aquí va:

SELECT

dbo.syscolumns.name AS fname,
dbo.syscolumns.id AS fid,
dbo.sysobjects.name AS taula_nom,
syscolumns_1.name AS rname,
syscolumns_1.id AS rid,
sysobjects_1.name AS rtaula_nom

FR/OM

dbo.syscolumns syscolumns_1 INNER JOIN
dbo.sysreferences sysreferences_1 ON syscolumns_1.id = sysreferences_1.rkeyid
AND syscolumns_1.colid = sysreferences_1.rkey1 INNER JOIN
dbo.sysobjects sysobjects_1 ON syscolumns_1.id = sysobjects_1.id INNER JOINdbo.syscolumns INNER JOIN
dbo.sysreferences ON dbo.syscolumns.id = dbo.sysreferences.fkeyid
AND dbo.syscolumns.colid = dbo.sysreferences.fkey1 INNER JOIN
dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id ON sysreferences_1.constid = dbo.sysreferences.constid