select   object_name(id)   as   表名   
,c.name   as   字段名   
,t.name   数据类型   
,c.prec   as   长度   
from   syscolumns   c   
inner   join   
systypes   t   
on   c.xusertype=t.xusertype   
where   c.id=object_id('VIEW_TEST  ')

解决方案 »

  1.   

    SELECT 
        视图名       = CASE WHEN A.COLORDER=1 THEN D.NAME ELSE '' END,
        视图说明     = CASE WHEN A.COLORDER=1 THEN ISNULL(F.VALUE,'') ELSE '' END,
        字段序号   = A.COLORDER,
        字段名     = A.NAME,
        标识       = CASE WHEN COLUMNPROPERTY( A.ID,A.NAME,'ISIDENTITY')=1 THEN '√'ELSE '' END,
        主键       = CASE WHEN EXISTS(SELECT 1 FROM SYSOBJECTS WHERE XTYPE='PK' AND PARENT_OBJ=A.ID AND NAME IN (
                SELECT NAME FROM SYSINDEXES WHERE INDID IN(
                            SELECT INDID FROM SYSINDEXKEYS WHERE ID = A.ID AND COLID=A.COLID))) THEN '√' ELSE '' END,
        类型       = B.NAME,
        占用字节数 = A.LENGTH,
        长度       = COLUMNPROPERTY(A.ID,A.NAME,'PRECISION'),
        小数位数   = ISNULL(COLUMNPROPERTY(A.ID,A.NAME,'SCALE'),0),
        允许空     = CASE WHEN A.ISNULLABLE=1 THEN '√'ELSE '' END,
        默认值     = ISNULL(E.TEXT,''),
        字段说明   = ISNULL(G.[VALUE],'')
    FROM 
        SYSCOLUMNS A 
    LEFT JOIN 
        SYSTYPES B 
    ON 
        A.XUSERTYPE=B.XUSERTYPE 
    INNER JOIN 
        SYSOBJECTS D 
    ON 
        A.ID=D.ID  AND D.XTYPE='V' AND  D.NAME='视图名称'
    LEFT JOIN 
        SYSCOMMENTS E 
    ON 
        A.CDEFAULT=E.ID
    LEFT JOIN 
        SYSPROPERTIES G 
    ON 
        A.ID=G.ID AND A.COLID=G.SMALLID  
    LEFT JOIN 
        SYSPROPERTIES F 
    ON 
        D.ID=F.ID AND F.SMALLID=0
    ORDER BY 
        A.ID,A.COLORDER
      

  2.   

    刚刚试了试上边的方法 wufeng4552 朋友的
    可以执行起来,好像不太符合我的需求,我现在是这样的视图这样的结构
    column   alias   table ....
    abc               table1
    aaa      aaali     table2
    bbb                table1
    ddd      dddli     table2
    我们需要求出来的结构是
    alias    table    tablecolumn(在table中的列名)   tabletype tablelength
              table1      abc                        ...        ...
    aaali     table2      aaa                          ...        ..
              table1      bbb                        ...          ...
    dddli     table2      ddd                         ...        ...
      

  3.   

    3楼的不可以用啊。我执行的时候一直报错
    Msg 208, Level 16, State 1, Line 1
    Invalid object name 'SYSPROPERTIES'.
      

  4.   

    现在我准备这样
    1.select   *   from   information_schema.view_column_usage
     where view_name='viewname'

    获取视图的信息(列名、和基表)
    2.exec   sp_help 'vAdhocActivities' 
    根据这个判断出字段是否有别名
    3.select   object_name(id)   as   表名   
    ,c.name   as   字段名   
    ,t.name   数据类型   
    ,c.prec   as   长度   
    from   syscolumns   c   
    inner   join   
    systypes   t   
    on   c.xusertype=t.xusertype   
    where   c.id=object_id('tablename'
    )
    根据这个拿表里信息不知道是不是很SB..
      

  5.   

    select text  from syscomments where id=object_id('视图名') syscomments
    包含数据库中每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的项。text 列包含原始的 SQL 定义语句。这些语句的最大大小为 4 MB。 
      

  6.   

    难道需要分析SQL语句吗? 刚刚看了下我的视图的脚本,感觉很难分析
    CREATE VIEW dbo.vilename AS  SELECT  dbo.ApplicationCustomer.FirstName, dbo.ApplicationCustomer.LastName, CAST(dbo.ApplicationCustomer.DateOfBirth AS datetime) AS DateOfBirth,        ISNULL(dbo.ClientAddress.StreetNumber, N'') + ' ' + ISNULL(dbo.ClientAddress.DirectionPrefix, N'') + ' ' + ISNULL(dbo.ClientAddress.StreetName, N'')                         + ' ' + ISNULL(dbo.ClientAddress.StreetType, N'') + ' ' + ISNULL(dbo.ClientAddress.DirectionSuffix, N'') AS ClientAddress1,  .....这是几个典型的.. 很难分析出来,而且我不确保其他视图是否还有其他的格式..