2012-10-02 85 views

回答

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] 
+0

优秀的代码。正是我需要的 – waanders

+0

很高兴看到它为你工作:p – redej

1

在SQL-服务器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 
+0

谢谢。但是,对于我认为的SQL Server 2000版本不起作用?获取错误信息:“无效的对象名'sys.tables'”。我正在使用版本2000,对不起,应该提到这个(更新我的问题)。 – waanders

+0

@waanders他明确表示它在2005+以上(经测试)。 – redej

+0

是的,我的错,正如我所说 – waanders

0

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

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

相关问题