将SQL Server中所有表的列信息显示出来

正在作一个关于SQL SERVER数据库导入Excel文件的程序,要读取数据库中的列的信息,从网上找了很多资料,终于总结出来比较理想的sql语句,执行后返回的列分别是:表名、列名、列类型、列长度、列描述、是否主键,语句如下: 
 
   
   
   
 
 
   
   
     
       
         
       
     
     
   
 
 
   
   
   
 




1 Select Sysobjects.Name As Tb_name, Syscolumns.Name As Col_name, Systypes.Name As Col_type, Syscolumns.Length As Col_len, Isnull(Sysproperties.Value,Syscolumns.Name) As Col_memo,

2 Case When Syscolumns.Name In

3 (Select 主键=A.Name

4 From Syscolumns A

5 Inner Join Sysobjects B On A.Id=B.Id And B.Xtype='U' And B.Name'Dtproperties'

6 Where Exists(Select 1 From Sysobjects Where Xtype='Pk' And Name In (

7 Select Name From Sysindexes Where Indid In(

8 Select Indid From Sysindexkeys Where Id = A.Id And Colid=A.Colid

9 )))

10 And B.Name=Sysobjects.Name

11 )

12 Then 1 Else 0 End As Is_key

13

14 From Sysobjects,Systypes,Syscolumns

15 Left Join Sysproperties On (Syscolumns.Id = Sysproperties.Id And

16 Syscolumns.Colid = Sysproperties.Smallid)

17

18 Where (Sysobjects.Xtype ='U' Or Sysobjects.Xtype ='V')

19 And Sysobjects.Id = Syscolumns.Id And Systypes.Xtype = Syscolumns.Xtype

20 And Systypes.Name  'Sysname' And Sysobjects.Name Like '%' Order By Sysobjects.Name, Syscolumns.Colid 

结果如图:


[img]/ArtImage/20051101/1701_1.jpg[/img]

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [SQL Server] 的这些文章也感兴趣:

XML文件导入SQL Server 2000
SQL Server 2008的商业智能
Microsoft RTM版本数据库SQL Server 2008
SQL Server 2005 数据转换服务的常见设计问题
通过HTTP访问SQL Server 2000
Sql Server2005 Transact-SQL 学习总结之-EXCEPT和INTERSECT运算符
专家谈SQL Server 2005的CLR
SQL Server静态页面导出技术4
Sql数据库MDF数据文件数据库恢复
Microsoft SQL Server 2000 中的位图