sql >> Databasteknik >  >> RDS >> Sqlserver

hur man skapar XML-schema från en befintlig databas i SQL Server 2008

Om du bara behöver xml-schemat för tabeller, fråga dem med detta:

select top 0 * FROM daTable FOR XML AUTO,XMLSCHEMA

Om du behöver tabellnamnen och kolumnerna för att skapa en representation av din databas och hur tabeller är anslutna kan du använda något i stil med detta:

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')

Låt din applikation använda ColumnReferencesTableId och ColumnReferencesTableColumnId för att få tabellrelationer. Du kan också gå tillbaka till kolumner och tabeller som refereras till om du föredrar att skriva ut deras namn men jag trodde att deras ID skulle räcka.



  1. SQL-skript för att skapa infogningsskript

  2. Följ hur man strukturerar chattdelen av appen?

  3. Installera PostgreSQL Client v10 på AWS Amazon Linux (EC2) AMI

  4. Finns det någon legitim anledning till att använda Unix-sockets över TCP/IP med mysql?