如何查询SQL Server数据库中的FULL表名列表

时间:2009-12-09 20:38:55

标签: sql-server sql-server-2008

我需要遍历数据库中的所有表。我正在使用这个查询:

SELECT so.name, so.*
FROM sysobjects so
WHERE so.xtype = 'U'

这适用于'dbo'模式中的所有表,但它不适用于任何其他模式。我希望输出像这样:

Users.Address Users.TelephoneNumbers dbo.GlobalSettings dbo.Configuration

相反,我得到了这个:

地址 电话号码 全局设置 构造

当我尝试构建动态SQL查询时,它失败了,因为它找不到Address和TelephoneNumber表,因为它们的模式不是默认的'dbo'。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

怎么样:

Select Schema_Name + '.' + Table_Name from Information_Schema.Tables

答案 1 :(得分:2)

在SQL Server 2005及更高版本中,您不应再使用已弃用的sysobjects和sytables以及这些视图。

改为使用“sys”目录视图:

SELECT * FROM sys.tables

也应该在“dbo”模式之外工作。

答案 2 :(得分:0)

在SQL Server 2005/2008中:

SELECT * FROM information_schema.tables

在SQL Server 2000中:

SELECT * FROM sysobjects WHERE xtype='U'