यदि आपको केवल टेबल की एक्सएमएल स्कीमा की आवश्यकता है तो उन्हें इसके साथ पूछें:
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 का उपयोग करने दें। यदि आप उनके नाम लिखना पसंद करते हैं तो आप उन स्तंभों और तालिकाओं में वापस शामिल हो सकते हैं जिन्हें संदर्भित किया जाता है, लेकिन मुझे लगा कि उनकी आईडी पर्याप्त होगी।