是否存在一个系统存储过程,可以列出SQL Server 2000数据库中所有表的名称以及每个表中所有列的名称?我想将这些数据导出到文件进行文档记录。
是否存在一个系统存储过程,可以列出SQL Server 2000数据库中所有表的名称以及每个表中所有列的名称?我想将这些数据导出到文件进行文档记录。
我不知道是否存在系统存储过程,但我使用以下方法:
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]
SELECT t.name TableName, c.name ColumnName
FROM sys.tables t
JOIN sys.columns c ON t.object_id=c.object_id
您还可以查询INFORMATION_SCHEMA.COLUMNS
视图。
使用此视图也更安全。Microsoft对该视图表示:“直接查询系统表可能不会提供准确的信息,如果在将来的版本中更改了系统表,则信息可能会失效。这些视图提供了SQL Server元数据的内部、独立于系统表的视图。信息模式视图允许应用程序正常工作,即使对系统表进行了重大更改。”