• 获得表中字段说明


    SELECT
    ID = newid(),
    字段名= convert(varchar(100), a.name),
    表名= convert(varchar(50), d.name ),
    库名= 'WEPM_OA',
    字段说明=convert(varchar(50), isnull(g.[value],'')),
    字段说明=convert(varchar(50), isnull(g.[value],''))
    FROM dbo.syscolumns a
    left join dbo.systypes b on a.xusertype=b.xusertype
    inner join dbo.sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
    left join dbo.syscomments e on a.cdefault=e.id
    left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
    left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
    where d.name ='XsChapter'

    -------------------------------

    SQL Server表描述信息

    drop table test
     --创建表及描述信息  
       
     create   table   test(a1   varchar(10),a2   char(2))  
       
     --为表添加描述信息  
     EXECUTE   sp_addextendedproperty   N'MS_Description',   '人员信息表',   N'user',   N'dbo',   N'table',   N'test',   NULL,   NULL  
       
     --为字段a1添加描述信息  
     EXECUTE   sp_addextendedproperty   N'MS_Description',   '姓名 ',   N'user',   N'dbo',   N'table',   N'test',   N'column',   N'a1'  
       
     --为字段a2添加描述信息  
     EXECUTE   sp_addextendedproperty   N'MS_Description',   '性别 ',   N'user',   N'dbo',   N'table',   N'test',   N'column',   N'a2'  
     --更新表中列a1的描述属性:  
     EXEC   sp_updateextendedproperty   N'MS_Description','字段2', N'user', N'dbo', N'table', N'test', N'column', N'a1'
       
     --删除表中列a1的描述属性:  
     EXEC   sp_dropextendedproperty   'MS_Description','user','dbo','table','test','column',a1  

    select * from test

    select * from sys.extended_properties where major_id=OBJECT_ID('test')

    添加扩展属性后,sql server studio要把数据库收起来,刷新后,再通过“对象资源管理器”,“数据库”,“具体的数据库”“表”,“具体的表”的属性(或者“具体的列”的属性)来查看才能看得到。

    SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表名', 'column', default)

    select * from sys.all_objects

    SELECT * FROM SYS.fn_listextendedproperty('MS_Description', 'user', 'dbo', 'table', null, null, null)
    --查询表列描述
    select col.Name,msdesc.value,col.colid from 
    (select lower(name) as Name,colid from syscolumns where id=object_id('table_name')) col
    left join (select minor_id,value from sys.extended_properties 
    where major_id=object_id('table_name') and minor_id>0) msdesc on col.colid=msdesc.minor_id
    order by col.colid

    生成存储过程表字段参数:
    declare @table varchar(100)
    set @table = 'com_baseinfo'--表名字
    select '@i_'+col.name+' '+st.name+(case when st.name in ('decimal','numeric','varbinary','varchar','binary','char','nvarchar','nchar') 
    then '('+convert(varchar(10),(case when st.name='nchar' or st.name='nvarchar' then col.[length]/2 when st.name='decimal' or st.name='decimal' then col.xprec else col.[length] end))
    +(case when st.name='decimal' or st.name='decimal' then ','+convert(varchar(10),col.scale) else '' end)+')' else '' end)+' = '+(case when st.name='bit' or st.name in ('int','smallint','bigint','tinyint') then '0' else 'null' end)+','
    +(case when cp.[value] is null then '' else '--'+convert(nvarchar(1000),cp.value) end) 
    from
    (select * from syscolumns where id = object_id(@table)) col
    left join fn_listextendedproperty(NULL, 'user', 'dbo', 'table', @table, 'column', default) cp on col.name=cp.objname COLLATE Chinese_PRC_CI_AS
    inner join systypes st on col.xusertype=st.xusertype

    --生成程序调用存储过程参数
    declare @table varchar(100),@entity varchar(50)
    select @table = 'Com_BaseInfo',@entity='baseinfo'
    SELECT '                '+PARA FROM(
    SELECT IDX,replace(para,'${INDEX}',CONVERT(VARCHAR(10),IDX-1)) AS PARA FROM
    (select row_number() over(order by col.colid asc) as IDX,'new SqlParameter("@i_'+col.name+'", '+map.code+(case when st.name in ('varbinary','varchar','binary','char','nvarchar','nchar') 
    then ', '+convert(varchar(10),(case when st.name='nchar' or st.name='nvarchar' then col.[length]/2 else col.[length] end)) else '' end)
    +') { Value = '+@entity+'[${INDEX}]'
    +(case when st.name in ('numeric','decimal') then ',Precision='+convert(varchar(10),col.xprec)+',Scale='+convert(varchar(10),col.xscale) else '' end)+'},'
    +(case when cp.Value is null then '' else '//'+convert(nvarchar(1000),cp.value) end) as para
    from
    (select * from syscolumns where id = object_id(@table) and name not in ('Contactor','CompanyName')) col
    left join fn_listextendedproperty(NULL, 'user', 'dbo', 'table', @table, 'column', default) cp 
    on col.name=cp.objname COLLATE Chinese_PRC_CI_AS
    inner join systypes st on col.xusertype=st.xusertype
    inner join (select 'bigint' as xtype,'SqlDbType.BigInt' as code union
    select 'binary','SqlDbType.Binary' union
    select 'bit','SqlDbType.Bit' union
    select 'char','SqlDbType.Char' union
    select 'datetime','SqlDbType.DateTime' union
    select 'decimal','SqlDbType.Decimal' union
    select 'float','SqlDbType.Float' union
    select 'image','SqlDbType.Image' union
    select 'int','SqlDbType.Int' union
    select 'money','SqlDbType.Money' union
    select 'nchar','SqlDbType.NChar' union
    select 'ntext','SqlDbType.NText' union
    select 'numeric','SqlDbType.Real' union
    select 'nvarchar','SqlDbType.NVarChar' union
    select 'real','SqlDbType.Real' union
    select 'smalldatetime','SqlDbType.SmallDateTime' union
    select 'smallint','SqlDbType.SmallInt' union
    select 'smallmoney','SqlDbType.SmallMoney' union
    select 'text','SqlDbType.Text' union
    select 'timestamp','SqlDbType.Timestamp' union
    select 'tinyint','SqlDbType.TinyInt' union
    select 'uniqueidentifier','SqlDbType.UniqueIdentifier' union
    select 'varbinary','SqlDbType.VarBinary' union
    select 'varchar','SqlDbType.VarChar' union
    select 'xml','SqlDbType.Xml') map on st.name=map.xtype) t
    union 
    select 997,'new SqlParameter("@i_flag",SqlDbType.Int){Value=0},//操作类型' union 
    select 998,'new SqlParameter("@o_errCode",SqlDbType.VarChar,20){Direction = ParameterDirection.Output},//错误编码' union 
    select 999,'new SqlParameter("@o_errMsg",SqlDbType.NVarChar,100){Direction = ParameterDirection.Output}//错误信息') rst
    order by idx

    生成数据库字典:


    declare @html nvarchar(max)
    set @html = '<html><head><title>数据字典</title><style type="text/css">body{margin:0 auto;}table{margin-top:20px;100%;}th,td{}}</style></head><body>'
    select @html=@html+'<table><thead><tr><th colspan="12">'+t.name+isnull(':'+convert(nvarchar(100),(select value from sys.extended_properties
    where major_id=t.id and minor_id=0)),'')+'</th></tr><tr><th>序号</th><th>列名</th><th>标识列</th><th>主键</th><th>外键</th><th>数据类型</th><th>字节长度</th><th>长度</th><th>小数位</th><th>可空</th><th>默认值</th><th>说明</th></tr></thead><tbody>'+
    convert(nvarchar(max),(SELECT 1 as Tag,null as Parent,
    convert(varchar(10),a.colorder) as [tr!1!td!element],--序号
    a.name as [tr!1!td!element],--列名
    case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '√' else '' end as [tr!1!td!element],--标识列
    case when (SELECT count(1) FROM sysobjects
    WHERE (name in
    (SELECT name FROM sysindexes
    WHERE (id = a.id) AND (indid in
    (SELECT indid FROM sysindexkeys
    WHERE (id = a.id) AND (colid in
    (SELECT colid FROM syscolumns
    WHERE (id = a.id) AND (name = a.name))
    )))))
    AND (xtype = 'PK' ))>0 then '√' else '' end as [tr!1!td!element],--主键
    isnull((select top 1 '引用表'+object_name(rkeyid)+c.name+'列'
    from syscolumns c
    inner join sysforeignkeys f on f.rkeyid=c.id and f.rkey=c.colid
    where fkey=a.colid and fkeyid=a.id),'') as [tr!1!td!element],--外键
    b.name as [tr!1!td!element],--数据类型
    a.[length] as [tr!1!td!element],--字节长度
    COLUMNPROPERTY(a.id,a.name,'PRECISION') as [tr!1!td!element],--长度
    isnull(COLUMNPROPERTY(a.id,a.name,'Scale' ),0) as [tr!1!td!element],--小数位
    (case when a.isnullable=1 then '√' else '' end) as [tr!1!td!element],--可空
    isnull(e.[text],'') as [tr!1!td!element],--默认值
    isnull(g.[value],'') as [tr!1!td!element]--说明
    FROM syscolumns a
    left join systypes b
    on a.xtype=b.xusertype
    inner join sysobjects d
    on a.id=d.id and d.xtype='U' and d.name<> 'dtproperties'
    left join syscomments e
    on a.cdefault=e.id
    left join sys.extended_properties g
    on a.id=g.major_id AND a.colid = g.minor_id
    where a.id=t.id
    for XML EXPLICIT))+'</tbody>'from sysobjects t where name like 'club_%'
    set@html=@html+'</body></html>'

    select@html

  • 相关阅读:
    大型网站架构演化发展历程
    用Haproxy给MySQL做负载均衡
    一致性hash和虚拟节点
    Apache + Tomcat +mod_jk 实现集群
    浅谈时钟的生成(js手写代码)
    javascript
    vue-cli中安装方法
    webstorm激活
    解决webstorm卡顿问题
    gulp前端自动化环境搭建详解
  • 原文地址:https://www.cnblogs.com/zcm123/p/4585057.html
Copyright © 2020-2023  润新知