系统开发过中,2分钟之内搞定数据字典表文档的更新

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>



 
系统开发过中,数据字典表的更新
 

你们是否发现,

在系统开发过程中,你的在不停的改变,最初发给每个开发人员的数据表定义,

已经变得面目全非了,如果你这个这个项目开发的负责人,下面的人老是说,怎么数据表又变了

怎么也不通知我们呢,有时候工作繁忙,也不一定能够通知到所有的开发人员。

为此,我特地作了一个自动化的工具,每当数据表又大的变动时,你不需要再次去修改原始数据字典文档了

你只要按照我的步骤来做,保证这一切在2分钟之内,帮你搞定数据字典文档的更新

注意本方法,只针对MS2000。很遗憾,这一切,还没有做到完全自动化,谁有这个兴趣,完善它,我相信到时候,这一切会在1分钟之内搞定。
1.    在你的系统数据库中,创建以下存储过程
  该存储过程是获取数据字典信息

 

createProcedureGetAllTableInfoAs

begin

      DECLARE@au_idvarchar(11),@strNamevarchar(50),@Tidint,@strOwnervarchar(50)

      

      --获取所有的用户表信息

      DECLAREAll_TablesCURSOR

        FORselectconvert(varchar,Name),IDfromsysobjectswherextypE='U'orderbyName

      

      CreateTable#ColInfo

      (

            TNamevarchar(50),             --表名称

            ColNamevarchar(50),             --列名称

            REMARKsql_variant,             --注释

            Typevarchar(50),             --数据类型

            DefaultValuevarchar(255),  --缺省值

            IsAllowNullvarchar(10),      --是否允许为空

            IsPrimaryKeychar(2)         --是否为主键,用*标记

      )

      --主键信息

      CreateTable#PkInfo

      (

            TABLE_QUALIFIERvarchar(50),

            TABLE_OWNERvarchar(50),

            TABLE_NAMEvarchar(50),

            COLUMN_NAMEvarchar(50),

            KEY_SEQint,

            PK_NAMEvarchar(50)

      )

      

      set@strOwner=user_name()

      

      OPENAll_Tables

      FETCHNEXTFROMAll_Tablesinto@strName,@Tid

      while@@FETCH_STATUS=0

      begin

             --插入表及其注释信息

            InsertInto#ColInfo

            SELECT@StrName,'',isnull(Value,''),'','','',''

            FROM(select@strNameTName)Aleftjoin

                   ::fn_listextendedproperty('MS_Description',N'USER',N'dbo',N'Table',@strName,NULL,NULL) --表的注释信息

                  ON1=1

             --插入列信息

            insertinto#ColInfo

            select@strName,C.nameCName,convert(varchar,R.value)+(casec.statuswhen0x80thenchar(13)+char(10)+'自动增长列'else''end),

                   (casewhen(C.xtype>=34andC.xtype<=58)orC.xtypein(61,98,99,104,127,189)thenT.namewhenc.xtypein(59,60,106,108,122)thenT.name+'('+convert(varchar,C.xprec)+','+convert(varchar,C.xscale)+')'elseT.name+'('+convert(varchar,C.length)+')'end),

                   isnull(Def.text,''),

                   caseisnullablewhen1then'是'else'否'end,

                   ''

            from(systypesT

                 innerjoin

                 (

                      syscolumnsC

                      leftjoin

                      SysCommentsDef

                      onC.cdefault=Def.idand1=Def.colid

                )

                 onT.xtype=C.xtypeandT.xusertype=C.xusertype

                    )

                 leftjoin

                   ::fn_listextendedproperty('MS_Description',N'USER',N'dbo',N'Table',@strName,N'Column',NULL)R--列的注释信息

                 onconvert(varchar,R.objname)=convert(varchar,C.Name)

            whereC.id=object_id(@strName)

 

             

            insertinto#PkInfoEXEC[dbo].[sp_pkeys]@strName,@strOwner,DEFAULT

             

            fetchnextfromAll_Tablesinto@strName,@Tid

      end

      

      --更新主键信息

      update#ColInfo

       setIsPrimaryKey='是'

       from#PkInfo

      where#PkInfo.TABLE_NAME=#ColInfo.TNameand#PkInfo.COLUMN_NAME=#ColInfo.ColName

 

      CloseAll_Tables

      DEALLOCATEAll_Tables

      

      select'%%%%'ObjName,''REMARK,''Col1,''Col2,''Col3,''Col4,TName,0flag

      from#ColInfo

      whereColName=''

      union

      select '表名:'+TName,REMARK,'','','','',TName,1flag

      from#ColInfo

      whereColName=''

      union

      select'列名','注释','数据类型','缺省值','是否允许空','主键',TName,2

      from#ColInfo

      whereColName=''

      union

      selectColName,REMARK,Type,DefaultValue,IsAllowNull,

            IsPrimaryKey,TName,3

      from#ColInfo

      whereColName<>''

      

      orderby7,8,3

 

      droptable#PkInfo

      droptable#ColInfo 

end

 
2.    MSSQLSever提供的查询分析器中,
ExecGetAllTableInfo
3.    将查询结果信息,复制到MSSheet中共2页  1 
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭