3

是否存在列出 SQL Server 2000 数据库中所有表的名称以及每个表中该表中所有列的名称的系统存储过程?我想将此数据导出到文档中。

4

3 回答 3

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]
于 2012-10-02T12:57:36.777 回答
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
于 2012-10-02T13:01:02.977 回答
0

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

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

于 2012-10-03T13:07:03.030 回答