SQL Server数据字典的HTML格式

数据库 SQL Server
以下的文章主要是浅谈SQL Server数据字典的HTML格式,以及对其生成数据字典的示例T-SQL脚本的实际操作步骤的描述。

以下的文章主要是介绍SQL Server数据字典的HTML格式,SQL Server数据字典的HTML格在实际中的应用比例还是占为多数的,如果你对这一技术,心存好奇的话,以下的文章将会揭开它的神秘面纱。

运行下面的脚本来生成数据字典,并保存结果到一个扩展名为“.htm”的文件中。

生成数据字典的示例T-SQL脚本

 

Set nocount on   
DECLARE @TableName nvarchar(35)   
DECLARE Tbls CURSOR   
FOR   
Select distinct Table_name   
FROM INFORMATION_SCHEMA.COLUMNS   
--put any exclusions here   
--where table_name not like '%old'   
order by Table_name   
OPEN Tbls   
PRINT '<HTML><body>'   
FETCH NEXT FROM Tbls   
INTO @TableName   
WHILE @@FETCH_STATUS = 0   
BEGIN   
PRINT '</br>'   
PRINT '<table border="1">'   
Print '<B>' + @TableName + '</B>'   
PRINT '</br>'   
--Get the Description of the table   
--Characters 1-250   
Select substring(cast(Value as varchar(1000)),1,250) FROM   
sys.extended_properties A   
WHERE A.major_id = OBJECT_ID(@TableName)   
and name = 'MS_Description' and minor_id = 0   
--Characters 251-500   
Select substring(cast(Value as varchar(1000)),251, 250) FROM   
sys.extended_properties A   
WHERE A.major_id = OBJECT_ID(@TableName)   
and name = 'MS_Description' and minor_id = 0   
PRINT '<tr><b>'   
--Set up the Column Headers for the Table   
PRINT '<td><b>Column Name</b></td>'   
PRINT '<td><b>Description</b></td>'   
PRINT '<td><b>InPrimaryKey</b></td>'   
PRINT '<td><b>IsForeignKey</b></td>'   
PRINT '<td><b>DataType</b></td>'   
PRINT '<td><b>Length</b></td>'   
PRINT '<td><b>Numeric Precision</b></td>'   
PRINT '<td><b>Numeric Scale</b></td>'   
PRINT '<td><b>Nullable</b></td>'   
PRINT '<td><b>Computed</b></td>'   
PRINT '<td><b>Identity</b></td>'   
PRINT '<td><b>Default Value</b></td>'   
--Get the Table Data   
SELECT '</b></tr>',   
'<tr>',   
'<td>' + CAST(clmns.name AS VARCHAR(35)) + '</td>',   
'<td>' + substring(ISNULL(CAST(exprop.value AS VARCHAR(255)),''),1,250),   
substring(ISNULL(CAST(exprop.value AS VARCHAR(500)),''),251,250) + '</td>',   
'<td>' + CAST(ISNULL(idxcol.index_column_id, 0)AS VARCHAR(20)) + '</td>',   
'<td>' + CAST(ISNULL(   
(SELECT TOP 1 1   
FROM sys.foreign_key_columns AS fkclmn   
WHERE fkclmn.parent_column_id = clmns.column_id   
AND fkclmn.parent_object_id = clmns.object_id   
), 0) AS VARCHAR(20)) + '</td>',   
'<td>' + CAST(udt.name AS CHAR(15)) + '</td>' ,   
'<td>' + CAST(CAST(CASE WHEN typ.name IN (N'nchar', N'nvarchar') AND clmns.max_length <> -1   
THEN clmns.max_length/2   
ELSE clmns.max_length END AS INT) AS VARCHAR(20)) + '</td>',   
'<td>' + CAST(CAST(clmns.precision AS INT) AS VARCHAR(20)) + '</td>',   
'<td>' + CAST(CAST(clmns.scale AS INT) AS VARCHAR(20)) + '</td>',   
'<td>' + CAST(clmns.is_nullable AS VARCHAR(20)) + '</td>' ,   
'<td>' + CAST(clmns.is_computed AS VARCHAR(20)) + '</td>' ,   
'<td>' + CAST(clmns.is_identity AS VARCHAR(20)) + '</td>' ,   
'<td>' + isnull(CAST(cnstr.definition AS VARCHAR(20)),'') + '</td>'   
FROM sys.tables AS tbl   
INNER JOIN sys.all_columns AS clmns   
ON clmns.object_id=tbl.object_id   
LEFT OUTER JOIN sys.indexes AS idx   
ON idx.object_id = clmns.object_id   
AND 1 =idx.is_primary_key   
LEFT OUTER JOIN sys.index_columns AS idxcol   
ON idxidxcol.index_id = idx.index_id   
AND idxcol.column_id = clmns.column_id   
AND idxcol.object_id = clmns.object_id   
AND 0 = idxcol.is_included_column   
LEFT OUTER JOIN sys.types AS udt   
ON udt.user_type_id = clmns.user_type_id   
LEFT OUTER JOIN sys.types AS typ   
ON typ.user_type_id = clmns.system_type_id   
AND typtyp.user_type_id = typ.system_type_id   
LEFT JOIN sys.default_constraints AS cnstr   
ON cnstr.object_id=clmns.default_object_id   
LEFT OUTER JOIN sys.extended_properties exprop   
ON exprop.major_id = clmns.object_id   
AND exprop.minor_id = clmns.column_id   
AND exprop.name = 'MS_Description'   
WHERE (tbl.name = @TableName and   
exprop.class = 1) --I don't wand to include comments on indexes   
ORDER BY clmns.column_id ASC   
PRINT '</tr></table>'   
FETCH NEXT FROM Tbls   
INTO @TableName   
END   
PRINT '</body></HTML>'   
CLOSE Tbls   
DEALLOCATE Tbls   
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.

 

这个脚本将被安排作为一个工作来运行,所以你不需要担心要手动更新文档。

因为你将文档存储在数据库中,所以你不必担心拥有多个拷贝并指出哪个是***的。它还会与数据库一起备份。

以上的相关内容就是对HTML格式的SQL Server数据字典 的介绍,望你能有所收获。

【编辑推荐】

  1. SQL Server 2008 FileStream支持“真功夫版”
  2. SQL Server 2008稀疏列与列集的经验总结
  3. SQL Server 2008 CDC功能的主要作用是什么?
  4. SQL Server 客户端的IP地址限制访问的破解
  5. SQL Server创建job要用到的链接有哪些?
责任编辑:佚名 来源: 清华大学出版社
相关推荐

2015-07-22 17:21:34

Oracle数据字典

2010-04-28 17:49:41

Oracle数据字典

2010-04-09 10:13:13

Oracle数据字典

2010-03-31 16:38:02

Oracle数据字典

2010-04-06 17:17:16

Oracle数据字典

2010-04-27 16:18:26

Oracle数据字典

2010-04-14 14:09:38

Oracle管理脚本

2023-03-06 07:48:01

数据字典Spring

2023-05-03 09:18:24

RedisDB数据字典Dict

2010-04-22 09:36:56

Oracle数据字典

2022-10-10 08:01:08

MySQL字典表

2010-05-10 15:22:34

Oracle数据字典

2018-03-16 15:30:45

数据库MySQL数据字典

2023-03-04 20:50:19

MySQL字典InnoDB

2010-11-15 16:08:15

ORACLE系统表

2010-04-06 17:36:15

Oracle数据字典

2012-02-02 13:45:28

JavaJSP

2010-04-22 10:00:41

Oracle数据字典

2011-08-04 18:32:47

数据库字典SQL Server数

2010-07-09 10:27:33

SQL Server数
点赞
收藏

51CTO技术栈公众号