SQL生成資料字典語句
阿新 • • 發佈:2019-02-06
宣告:非原創,但忘記出處,程式碼貼在這裡,僅供參考!
SELECT [表名] = c.name, [表說明] = Isnull(f.[value],''), [列名] = a.name, [列序號] = a.column_id, [標識] = CASE WHEN is_identity = 1 THEN '√' ELSE '' END, [主鍵] = CASE WHEN EXISTS (SELECT 1 FROM sys.objects x JOIN sys.indexes y ON x.TYPE = N'PK' AND x.name = y.name JOIN sysindexkeys z ON z.id = a.object_id AND z.indid = y.index_id AND z.colid = a.column_id) THEN '√' ELSE '' END, [型別] = b.name, [位元組數] = CASE WHEN a.[max_length] = -1 AND b.name != 'xml' THEN 'max/2G' WHEN b.name = 'xml' THEN '2^31-1位元組/2G' ELSE Rtrim(a.[max_length]) END, [長度] = CASE WHEN Columnproperty(a.object_id,a.name,'Precision') = -1 THEN '2^31-1' ELSE Rtrim(Columnproperty(a.object_id,a.name,'Precision')) END, [小數] = Isnull(Columnproperty(a.object_id,a.name,'Scale'), 0), [是否為空] = CASE WHEN a.is_nullable = 1 THEN '√' ELSE '' END, [列說明] = Isnull(e.[value],''), [預設值] = Isnull(d.text,'') FROM sys.columns a LEFT JOIN sys.types b ON a.user_type_id = b.user_type_id INNER JOIN sys.objects c ON a.object_id = c.object_id AND c.TYPE = 'U' LEFT JOIN syscomments d ON a.default_object_id = d.id LEFT JOIN sys.extended_properties e ON e.major_id = c.object_id AND e.minor_id = a.column_id AND e.class = 1 LEFT JOIN sys.extended_properties f ON f.major_id = c.object_id AND f.minor_id = 0 AND f.class = 1 ORDER BY c.name