Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

cách tạo lược đồ XML từ cơ sở dữ liệu hiện có trong SQL Server 2008

Nếu bạn chỉ cần lược đồ xml của các bảng, hãy truy vấn chúng với điều này:

select top 0 * FROM daTable FOR XML AUTO,XMLSCHEMA

Nếu bạn cần tên bảng và cột để tạo bản đại diện cho cơ sở dữ liệu của mình và cách các bảng được kết nối, bạn có thể sử dụng một cái gì đó như sau:

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

Cho phép ứng dụng của bạn sử dụng ColumnRefferencesTableId và ColumnRefferencesTableColumnId để nhận các quan hệ bảng. Bạn cũng có thể nối lại các cột và bảng được tham chiếu nếu bạn muốn viết tên chúng ra nhưng tôi nghĩ rằng Id của chúng là đủ.



  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 đã xảy ra sự cố khi gửi lệnh tới chương trình

  2. Cách sử dụng trên hàm Patindex ()

  3. Nối nhiều hàng thành một chuỗi văn bản duy nhất bằng cách nhóm

  4. Cách ánh xạ nhiều phân vùng thành một nhóm tệp trong SQL Server (T-SQL)

  5. 4 cách để kiểm tra các dòng trùng lặp trong SQL Server