我有一个脚本,该脚本在所有可用的数据库(我可以访问的数据库)中搜索过程中的特定文本。
在我的服务器中,有许多数据库(在我的情况下,大约有150个数据库),这意味着即使大多数数据库都没有结果(约90%),我仍可以看到所有数据库的结果。
有什么方法可以避免得到这些空的结果查询?
答案 0 :(得分:0)
您可以使用下面的代码来检查存储过程在每个数据库中是否包含文本。如果仅在数据库中存在存储过程,则将具有结果集。
CREATE TABLE ##DatabasesContainingSP(dbname sysname, SPName SYSNAME);
EXECUTE master.sys.sp_MSforeachdb 'USE [?];
INSERT INTO ##DatabasesContainingSP
SELECT DISTINCT
db_name() as dbname, o.name AS Object_Name
FROM sys.sql_modules m
INNER JOIN
sys.objects o
ON m.object_id = o.object_id
WHERE m.definition Like ''%ABC%'';
'
IF EXISTS(SELECT * FROM ##DatabasesContainingSP )
begin
SELECT * FROM ##DatabasesContainingSP
end
GO
IF OBJECT_ID('tempdb..##DatabasesContainingSP' , 'U') IS NOT NULL
drop TABLE ##DatabasesContainingSP;
答案 1 :(得分:0)
感谢您的快速回复。
我设法通过创建一个表并将插入物添加到此表中来解决此问题,因为在最终生成的表中,该表只显示插入的结果。
>诚挚的问候, 亚历山大