检索SQL Server数据库中所有表的名称列

时间:2012-10-02 12:51:32

标签: sql-server stored-procedures sql-server-2000

是否存在一个系统存储过程,它列出了SQL Server 2000数据库中所有表的名称,并且每个表中列出了该表中所有列的名称?我想将此数据导出到文件中以供记录。

3 个答案:

答案 0 :(得分:6)

我不知道系统存储过程是否存在,但我使用它:

SELECT   SysObjects.[Name] as TableName,   
    SysColumns.[Name] as ColumnName,   
    SysTypes.[Name] As DataType,   
    SysColumns.[Length] As Length   
FROM   
    SysObjects INNER JOIN SysColumns   
ON SysObjects.[Id] = SysColumns.[Id]   
    INNER JOIN SysTypes  
ON SysTypes.[xtype] = SysColumns.[xtype]  
WHERE  SysObjects.[type] = 'U'  
ORDER BY  SysObjects.[Name]

答案 1 :(得分:1)

在SQL-Server 2005+中,您可以使用系统视图sys.columnssys.tables

来执行此操作
SELECT t.name TableName, c.name ColumnName
FROM sys.tables t
     JOIN sys.columns c ON t.object_id=c.object_id

答案 2 :(得分:0)

您还可以查询INFORMATION_SCHEMA.COLUMNS视图。

使用此视图也更安全。 Microsoft says this关于视图“如果在将来的版本中更改了系统表,则直接查询系统表可能无法提供准确的信息。这些视图提供了SQL Server元数据的内部系统表独立视图。信息模式视图允许即使对系统表进行了重大更改,应用程序也能正常工作。“