养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

SqlServer2017数据字典怎么生成

时间:2024-11-02 12:33:42

我们捂执涡扔使用SQLServer2017的时候,生成一个数据字典可以帮助我们快速查找数据表以及数据字段,下面小编就给大家演示一下在SQLServer2017中如何生成数据字典。

SqlServer2017数据字典怎么生成

工具/原料

SQLServer2017

方法/步骤

1、首选选择一个要生成数据字典的数据库,右键单击选择新建查询,如下图所示

SqlServer2017数据字典怎么生成

2、然后将数据字典的生成脚本拷贝到编辑区域,如下图所示

SqlServer2017数据字典怎么生成

3、接着点击执行按钮,执行SQL脚本,如下图所示

SqlServer2017数据字典怎么生成

4、等到底部消息栏生成了HTML结构语句就可以了,如下图所示

SqlServer2017数据字典怎么生成

5、接着将HTML内容拷贝到HTML文件中,如下图所示

SqlServer2017数据字典怎么生成

6、最后运行HTML文件就可以看到数据库的数据字典了,如下图所示

SqlServer2017数据字典怎么生成

7、最后给大家贴一下数据字典的生成脚本水貔藻疽,大家根据自己的情况修改使用:USE[SFKD]goSETANSI_NULLSON稆糨孝汶;GOSETQUOTED_IDENTIFIERON;GO--=============================================--Description:<生成数据库字典>--=============================================SETNOCOUNTON;/**输出头部信息*/PRINT'<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';PRINT'<htmlxmlns="http://www.w3.org/1999/xhtml">';PRINT'<head>';PRINT'<title>数据库字典</title>';PRINT'<styletype="text/css">';PRINT'body{margin:0;cursor:default;font-family:Arial,Helvetica,sans-serif,"微软雅黑","宋体";}';PRINT'.tableBox{margin:10pxauto;padding:0px;width:1200px;height:auto;background:#EAEFF3;border:1pxsolid#45360A;margin-top:50px;}';PRINT'.tableBoxh3{font-size:12pt;height:30px;line-height:30px;background:#460B6A;padding:0px0px0px15px;color:#FFF;margin:0px;text-align:left}';PRINT'.tableBoxtable{width:1200px;padding:0px}';PRINT'.tableBoxth{height:25px;border-top:1pxsolid#FFF;border-left:1pxsolid#FFF;background:#C0DBF7;font-size:14px;}';PRINT'.tableBoxtd{font-size:12px;height:25px;padding-left:10px;border-top:1pxsolid#FFF;border-left:1pxsolid#FFF;}';PRINT'.tableBoxtr:hover{background:#C0DBF7;}';PRINT'.tableBox.field{font-weight:bold;color:#276926;}';PRINT'</style>';PRINT'</head>';PRINT'<body>';PRINT'<divstyle="text-align:center;"><h2>'+DB_NAME()+'数据库字典</h2></br><fontstyle="color:gray;">生成于:'+CONVERT(VARCHAR,GETDATE(),120)+'</font></div></br>';/**数据库菜单列表*/--数据库表DECLARE@tableDBTABLETABLE(idINTIDENTITY(1,1)PRIMARYKEY,tableNameNVARCHAR(300));INSERTINTO@tableDBTABLE(tableName)SELECTDISTINCTTABLE_NAMEAStableNameFROMINFORMATION_SCHEMA.COLUMNSWHERE(SELECTCOUNT(*)FROMsys.tablesAStblINNERJOINsys.all_columnsASclmnsONclmns.object_id=tbl.object_idLEFTOUTERJOINsys.indexesASidxONidx.object_id=clmns.object_idAND1=idx.is_primary_keyLEFTOUTERJOINsys.index_columnsASidxcolONidxcol.index_id=idx.index_idANDidxcol.column_id=clmns.column_idANDidxcol.object_id=clmns.object_idAND0=idxcol.is_included_columnLEFTOUTERJOINsys.typesASudtONudt.user_type_id=clmns.user_type_idLEFTOUTERJOINsys.typesAStypONtyp.user_type_id=clmns.system_type_idANDtyp.user_type_id=typ.system_type_idLEFTJOINsys.default_constraintsAScnstrONcnstr.object_id=clmns.default_object_idLEFTOUTERJOINsys.extended_propertiesexpropONexprop.major_id=clmns.object_idANDexprop.minor_id=clmns.column_idANDexprop.name='MS_Description'WHERE(tbl.name=TABLE_NAMEANDexprop.class=1))>0ORDERBYTABLE_NAME;--输出表目录信息DECLARE@tname_curVARCHAR(200);DECLARE@count_t1INT;DECLARE@i_t1INT;DECLARE@i_t2INT;DECLARE@字段名称VARCHAR(200);DECLARE@类型VARCHAR(200);DECLARE@长度VARCHAR(200);DECLARE@数值精度VARCHAR(200);DECLARE@小数位数VARCHAR(200);DECLARE@默认值VARCHAR(200);DECLARE@允许为空VARCHAR(200);DECLARE@外键VARCHAR(200);DECLARE@主键VARCHAR(200);DECLARE@描述VARCHAR(4000);--初始化值SET@i_t1=1;SET@i_t2=1;SELECT@count_t1=COUNT(*)FROM@tableDBTABLE;IF@count_t1>0BEGINPRINT'<divstyle="text-align:left;margin:20px0px50px50px;">目录:<br><ol>';WHILE@i_t1<=@count_t1BEGINSELECT@tname_cur=tableNameFROM@tableDBTABLEWHEREid=@i_t1;PRINT'<li><ahref="#'+@tname_cur+'">表:'+@tname_cur+'</a></li>';SET@i_t1=@i_t1+1;END;PRINT'</ol></div>';END;--输出表行信息IF@count_t1>0BEGINSET@i_t1=1;WHILE@i_t1<=@count_t1BEGINSELECT@tname_cur=tableNameFROM@tableDBTABLEWHEREid=@i_t1;DECLARE@tabledescNVARCHAR(4000);--表描述SELECT@tabledesc=CAST(valueASVARCHAR(4000))FROMsys.extended_propertiesASAWHEREA.major_id=OBJECT_ID(@tname_cur)ANDname='MS_Description'ANDminor_id=0;SET@tabledesc=CASEWHEN(@tabledescISNULLORLEN(RTRIM(LTRIM(@tabledesc)))<=0)THEN''ELSE':'+@tabledescEND;--输出表头部信息PRINT'<divclass="tableBox">';PRINT'<aname="'+@tname_cur+'"></a>';PRINT'<h3>'+CAST(@i_t1ASVARCHAR(10))+'.'+@tname_cur+'表'+@tabledesc+'</h3>';PRINT'';PRINT'<tablecellspacing="0">';PRINT'<tr>';PRINT'<th>序号</th>';PRINT'<th>字段名称</th>';PRINT'<th>类型</th>';PRINT'<th>长度</th>';PRINT'<th>数值精度</th>';PRINT'<th>小数位数</th>';PRINT'<th>默认值</th>';PRINT'<th>允许为空</th>';PRINT'<th>外键</th>';PRINT'<th>主键</th>';PRINT'<th>描述</th>';PRINT'</tr>';DECLARETRowsCURSORFORSELECT'<tdclass="field">'+CAST(clmns.nameASVARCHAR(35))+'</td>','<td>'+CAST(udt.nameASCHAR(15))+'</td>','<td>'+CAST(CAST(CASEWHENtyp.nameIN(N'nchar',N'nvarchar')ANDclmns.max_length<>-1THENclmns.max_length/2ELSEclmns.max_lengthENDASINT)ASVARCHAR(20))+'</td>','<td>'+CAST(CAST(clmns.precisionASINT)ASVARCHAR(20))+'</td>','<td>'+CAST(CAST(clmns.scaleASINT)ASVARCHAR(20))+'</td>','<td>'+ISNULL(CAST(cnstr.definitionASVARCHAR(20)),'')+'</td>','<td>'+(CASEWHENclmns.is_nullable=1THEN'√'ELSE''END)+'</td>','<td>'+(CASEWHENclmns.is_computed=1THEN'√'ELSE''END)+'</td>','<td>'+(CASEWHENclmns.is_identity=1THEN'√'ELSE''END)+'</td>','<tdstyle="">'+ISNULL(CAST(exprop.valueASVARCHAR(500)),'')+'</td>'FROMsys.tablesAStblINNERJOINsys.all_columnsASclmnsONclmns.object_id=tbl.object_idLEFTOUTERJOINsys.indexesASidxONidx.object_id=clmns.object_idAND1=idx.is_primary_keyLEFTOUTERJOINsys.index_columnsASidxcolONidxcol.index_id=idx.index_idANDidxcol.column_id=clmns.column_idANDidxcol.object_id=clmns.object_idAND0=idxcol.is_included_columnLEFTOUTERJOINsys.typesASudtONudt.user_type_id=clmns.user_type_idLEFTOUTERJOINsys.typesAStypONtyp.user_type_id=clmns.system_type_idANDtyp.user_type_id=typ.system_type_idLEFTJOINsys.default_constraintsAScnstrONcnstr.object_id=clmns.default_object_idLEFTOUTERJOINsys.extended_propertiesexpropONexprop.major_id=clmns.object_idANDexprop.minor_id=clmns.column_idANDexprop.name='MS_Description'WHERE(tbl.name=@tname_curANDexprop.class=1)ORDERBYclmns.column_idASC;SET@i_t2=1;OPENTRows;FETCHNEXTFROMTRowsINTO@字段名称,@类型,@长度,@数值精度,@小数位数,@默认值,@允许为空,@外键,@主键,@描述;--输出表行数据WHILE@@FETCH_STATUS=0BEGINPRINT'<tr>';PRINT'<td>'+CAST(@i_t2ASVARCHAR(10))+'</td>';PRINT@字段名称;PRINT@类型;PRINT@长度;PRINT@数值精度;PRINT@小数位数;PRINT@默认值;PRINT@允许为空;PRINT@外键;PRINT@主键;PRINT@描述;PRINT'</tr>';FETCHNEXTFROMTRowsINTO@字段名称,@类型,@长度,@数值精度,@小数位数,@默认值,@允许为空,@外键,@主键,@描述;SET@i_t2=@i_t2+1;END;CLOSETRows;DEALLOCATETRows;PRINT'<tr><tdcolspan="11"style="text-align:right"><ahref="#top">TOP↑</a></td></tr>';PRINT'</table>';PRINT'</div>';SET@i_t1=@i_t1+1;END;END;PRINT'</body>';PRINT'</html>';SETNOCOUNTOFF;

© 一点知识