我需要遍历数据库中的所有表。我正在使用这个查询:
SELECT so.name, so.*
FROM sysobjects so
WHERE so.xtype = 'U'
这适用于'dbo'模式中的所有表,但它不适用于任何其他模式。我希望输出像这样:
Users.Address Users.TelephoneNumbers dbo.GlobalSettings dbo.Configuration
相反,我得到了这个:
地址 电话号码 全局设置 构造
当我尝试构建动态SQL查询时,它失败了,因为它找不到Address和TelephoneNumber表,因为它们的模式不是默认的'dbo'。
有什么想法吗?
答案 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'