Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

jak stworzyć schemat XML z istniejącej bazy danych w SQL Server 2008

Jeśli potrzebujesz tylko schematu XML tabel, zapytaj je za pomocą tego:

select top 0 * FROM daTable FOR XML AUTO,XMLSCHEMA

Jeśli potrzebujesz nazw tabel i kolumn, aby stworzyć reprezentację swojej bazy danych i sposobu, w jaki tabele są połączone, możesz użyć czegoś takiego:

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

Pozwól aplikacji używać ColumnReferencesTableId i ColumnReferencesTableColumnId w celu uzyskania relacji między tabelami. Możesz także dalej dołączyć z powrotem do kolumn i tabel, do których się odwołujesz, jeśli wolisz wypisać ich nazwy, ale myślałem, że wystarczy ich identyfikator.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server, wprowadzający w błąd XLOCK i optymalizacje

  2. Jak zdobyć miesiąc temu od dzisiaj w SQL Server 2008?

  3. Jak przenieść kopię zapasową bazy danych na inny komputer w SQL Server 2008?

  4. Jak mogę pobrać tabelę z procedury składowanej do tabeli danych?

  5. Odpowiednik C# typów danych SQL Server