我想在SQL Server 2005中列出特定数据库的所有对象.我创建了一个查询,如下所示:
select name, type_desc from sys.objects
WHERE type in ( 'C', 'D', 'F', 'L', 'P', 'PK', 'RF', 'TR', 'UQ', 'V', 'X' )
union
select name, type_desc from sys.indexes
order by name
Run Code Online (Sandbox Code Playgroud)
但是,此查询列出了所有数据库的所有对象,而不是特定数据库.
我的问题是:有没有办法查询特定数据库的所有对象?如果是的话,请你告诉我该怎么做?
我sp_MSforeachdb用一个简单的命令运行下面的存储过程.我的问题是如何限制结果只显示至少有1条记录满足命令的数据库:

这是我的存储过程:
EXECUTE master.sys.sp_MSforeachdb 'USE [?];
IF (EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = ''Tabs''))
BEGIN
SELECT ''?'' as dbname,T.TabName, T.TabPath
FROM Tabs T
WHERE T.TabID IN (
SELECT Distinct TM.TabID
FROM TabModules TM
WHERE mID IN (
...
)
)
ORDER BY T.TabName
END
'
Run Code Online (Sandbox Code Playgroud)
任何想法我如何修改sp,以便它不显示具有空结果的数据库(见图)?