sql >> Database >  >> RDS >> Sqlserver

hoe maak je een XML-schema van een bestaande database in SQL Server 2008

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.



  1. Code om SQL-scripts te valideren

  2. MYSQL - Gegevens selecteren uit de tweede rij in een grote tabel

  3. Het aantal uitgevoerde zoekopdrachten tellen

  4. afbeelding wordt niet opgehaald uit de database met behulp van pad