ITPub博客

首页 > Linux操作系统 > Linux操作系统 > sql server 2005 导出用户表数据字典

sql server 2005 导出用户表数据字典

原创 Linux操作系统 作者:sunger_chen 时间:2009-06-10 11:18:24 0 删除 编辑
--作用:用于sql server 2005 导出用户表数据字典
--作者:郭强--时间:年月日--用法如下:
--1 默认导出当前数据库中所有用户表(xtype = 'u')的数据字典;
--2 可以在xtype = 'u'替换为如下所示语句xtype = 'u' and name in ('son','Person') 导出自定义的表的数据字典;
--3 可以利用集成服务SSIS导出数据字典的excel文件,形成文档;
------------------------------------------------------
 
 
select sysobjects.name as "表名",syscolumns.name as "字段名",
case when systypes.name in ('binary','char','nchar') then (systypes.name + '(' + cast(syscolumns.prec as varchar(50))+ ')')
when systypes.name in ('decimal','numeric') then (systypes.name + '(' + cast(syscolumns.prec as varchar(50)) + ',' +cast(syscolumns.scale as varchar(50)) + ')')
when systypes.name in ('nvarchar','varchar','varbinary') then (case when syscolumns.prec = -then (systypes.name +'(MAX)') else (systypes.name + '(' + cast(syscolumns.prec as varchar(50)) + ')') end)
else systypes.name end as "字段类型",
syscomments.text as "默认值", case when syscolumns.isnullable = 1 then 'Y' else 'N' end as "能否为空",
 cast(sys.extended_properties.value as varchar(1024)) as "备注"
from syscolumns inner join systypes on syscolumns.xtype = systypes.xtype left join sysobjects
on syscolumns.id = sysobjects.id left outer join sys.extended_properties
on ( sys.extended_properties.minor_id = syscolumns.colid and sys.extended_properties.major_id = syscolumns.id)left outer join syscomments
on syscolumns.cdefault = syscomments.id where syscolumns.id in (select id from sysobjects where xtype = 'u') and(systypes.name <> 'sysname') order by sysobjects.name asc


-----------存儲過程
-GetTableinfo 'cst' 


  
  
alter procedure GetTableinfo  @Systemname varchar (8)   
as   
declare @Tvar1 table(tablename varchar(12),id int,Name varchar(50) null,CNname varchar(50) null,type varchar(30) null,length int null,IntofBit int null,xscale int null,collation varchar(30) null,isnullable varchar(10) not null default 'False')  
  
SET @Systemname=@Systemname+'%' 

 select  @Systemname
  
insert into @Tvar1  
  select d.name,a.colid,A.name,CNname=isnull(Displayvalue,''),  
  type=c.name ,  
  A.length,(A.prec-A.scale) IntofBit ,A.scale,A.collation,  
  isnullable=(case isnullable when 1 then 'YES' else  'NO' end)   
  from syscolumns A   
  inner join  
  (select name from syscolumns where id in ( (SELECT  id  FROM sysobjects where xtype='u'  and name like @Systemname  and len(rtrim(ltrim(name)))='8'))) as B  
  on A.name=B.name  
left join ERPDD on DDKEY=A.name  
join systypes c on c.xusertype=A.xusertype   
join sysobjects d on a.id=d.id     
  WHERE a.id in (SELECT  id  FROM sysobjects where xtype='u'  and name like @Systemname  and len(rtrim(ltrim(name)))='8')  
group by d.name,A.name,isnull(Displayvalue,''),  
  c.name ,A.length,(A.prec-A.scale)  ,A.scale,A.collation,  
(case isnullable when 1 then 'YES' else  'NO' end) , a.colid  
ORDER BY a.colid  
select tablename [表名], Name [字段名],type [字段類型],Length [字段寬度],id,isnull(xscale,'') [小數位數],isnullable [是否允許為空] ,CNname [中文解釋] from @Tvar1  order by tablename  
  
  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16998571/viewspace-605789/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-01-09

  • 博文量
    28
  • 访问量
    24079