有点难度,可以找出pk和constraint,但是要定位到列,好像不行,让我再想想

解决方案 »

  1.   

    select rtrim(b.name) as colname
    ,case when h.id is not null then 'PK' else '' end as primarykey
    ,type_name(b.xusertype) + case when b.colstat & 1 = 1 then '[ID(' + convert(varchar,ident_seed(a.name)) + ',' + convert(varchar,ident_incr(a.name)) + ')]' else '' end as type
    ,b.length
    ,case b.isnullable when 0 then 'N' else 'Y' end as [isnull]
    ,isnull(e.text,'') as [default]
    ,isnull(c.value,'') as descript 
    from sysobjects a,syscolumns b 
    left outer join sysproperties c on b.id = c.id and b.colid = c.smallid 
    left outer join syscomments e on b.cdefault = e.id
    left outer join (select g.id,g.colid from sysindexes f,sysindexkeys g where f.id = g.id and f.indid = g.indid and f.indid > 0 and f.indid < 255 and (f.status & 2048)<>0) h on b.id = h.id and b.colid = h.colid
    where a.id = b.id
    and a.id = object_id('titles') --tablename改成你要导出的表的名称
    order by b.colid
      

  2.   

    EXEC sp_helpconstraint 表名
      

  3.   

    偶来学习,
    另外
    sysconstrains里面有关于约束的信息大力兄好像没有提供
      

  4.   

    你的唯一索引是不是unique constraints?
      

  5.   

    declare @TblName varchar(30)set @TblName = '...'select b.id, b.name, d.name
    from sysobjects a, sysindexes b, sysindexkeys c, syscolumns d 
    where a.name = @TblName and a.id = b.id and INDEXPROPERTY(object_id(@TblName), b.name, 'IsUnique') = 1 and c.id = a.id and c.colid = d.colid and c.indid = b.indid and d.id = a.id