Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

как да създадете XML схема от съществуваща база данни в SQL Server 2008

Ако имате нужда само от xml схемата на таблиците, потърсете ги с това:

select top 0 * FROM daTable FOR XML AUTO,XMLSCHEMA

Ако имате нужда от имената и колоните на таблиците, за да създадете представяне на вашата база данни и как таблиците са свързани, можете да използвате нещо подобно:

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

Позволете на вашето приложение да използва ColumnReferencesTableId и ColumnReferencesTableColumnId, за да получи релации на таблица. Можете също така да се присъедините допълнително към колони и таблици, които са посочени, ако предпочитате да изпишете имената им, но реших, че техните идентификатори ще са достатъчни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разлика между CTE и SubQuery?

  2. Експортирайте таблични данни от един SQL сървър на друг

  3. Неуспешен опит за прикачване на автоматично именувана база данни за файл ....database1.mdf

  4. как да покажа само четни или нечетни редове в sql сървър 2008?

  5. Как се съхраняват стойностите на varchar в база данни на SQL Server?