Als je alleen het XML-schema van tabellen nodig hebt, vraag ze dan als volgt op:
select top 0 * FROM daTable FOR XML AUTO,XMLSCHEMA
Als je de tabelnamen en kolommen nodig hebt om een representatie van je database te maken en hoe tabellen zijn verbonden, kun je zoiets als dit gebruiken:
SELECT
s.name as '@Schema'
,t.name as '@Name'
,t.object_id as '@Id'
,(
SELECT c.name as '@Name'
,c.column_id as '@Id'
,IIF(ic.object_id IS NOT NULL,1,0) as '@IsPrimaryKey'
,fkc.referenced_object_id as '@ColumnReferencesTableId'
,fkc.referenced_column_id as '@ColumnReferencesTableColumnId'
FROM sys.columns as c
LEFT OUTER JOIN sys.index_columns as ic
ON c.object_id = ic.object_id
AND c.column_id = ic.column_id
AND ic.index_id = 1
LEFT OUTER JOIN sys.foreign_key_columns as fkc
ON c.object_id = fkc.parent_object_id
AND c.column_id = fkc.parent_column_id
WHERE c.object_id = t.object_id
FOR XML PATH ('Column'),TYPE
)
FROM sys.schemas as s
INNER JOIN sys.tables as t
ON s.schema_id = t.schema_id
FOR XML PATH('Table'),ROOT('Tables')
Laat uw toepassing de ColumnReferencesTableId en ColumnReferencesTableColumnId gebruiken om tabelrelaties op te halen. U kunt ook verder teruggaan naar kolommen en tabellen waarnaar wordt verwezen als u hun namen liever uitschrijft, maar ik dacht dat hun ID's voldoende zouden zijn.