我想提出在尽可能多的 SQL Server 版本上返回 Microsoft SQL Server 实例中的数据库和表的最小查询集。
我不确定我是否应该半回答我自己的问题,但这是我认为 2000 年和 2005 年需要的内容。理想情况下,我会更进一步,但我无法访问旧版本:
权限
2005:具有查看任何定义权限的用户
2000:在所有要检索的数据库上具有公共角色的用户
数据库
sp_databases
或者
SELECT * FROM sysdatabases
都适用于 SQL Server 2000 和 2005
表
2005年
SELECT name FROM <database>.sys.tables
或者
SELECT table_name FROM <database>.information_schema.tables WHERE table_type = 'BASE TABLE'
2000
SELECT name from <database>.dbo.sysobjects WHERE xtype = 'U'