Sql server 如何查询SQL server数据库中的完整表名列表

Sql server 如何查询SQL server数据库中的完整表名列表,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我需要遍历数据库中的所有表。我正在使用thsi查询进行此操作: SELECT so.name, so.* FROM sysobjects so WHERE so.xtype = 'U' 这适用于“dbo”模式中的所有表,但不适用于任何其他模式。我希望输出如下: 用户地址 用户.电话号码 dbo.GlobalSettings dbo.配置 相反,我得到的是: 地址 电话号码 全球设置 配置 当我尝试构造动态SQL查询时,它失败了,因为它找不到地址表和电话号码表,因为它们的模式不是默认的“dbo”

我需要遍历数据库中的所有表。我正在使用thsi查询进行此操作:

SELECT so.name, so.*
FROM sysobjects so
WHERE so.xtype = 'U'
这适用于“dbo”模式中的所有表,但不适用于任何其他模式。我希望输出如下:

用户地址 用户.电话号码 dbo.GlobalSettings dbo.配置

相反,我得到的是:

地址 电话号码 全球设置 配置

当我尝试构造动态SQL查询时,它失败了,因为它找不到地址表和电话号码表,因为它们的模式不是默认的“dbo”

有什么想法吗?

怎么样:

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

在SQL Server 2005及更高版本中,您不应再使用不推荐使用的sysobjects和sytable以及这些视图

改用“sys”目录视图:

SELECT * FROM sys.tables

也应适用于“dbo”模式以外的模式。

在SQL Server 2005/2008中:

SELECT * FROM information_schema.tables
在SQL Server 2000中:

SELECT * FROM sysobjects WHERE xtype='U'

什么版本的SQL Server?您可以使用SYSTABLES:这是Sql Server 2000吗(我相信它来自您发布的Sql)?@OMG Ponies-否,信息\u schema.tables将在Sql Server上工作。您可以参考此链接:+1:很抱歉,我已更正并撤回我先前的声明当Microsoft遵守标准时,给予他们信任非常重要:)