SELECT OBJECT_NAME([object_id]), definition
FROM sys.sql_modules
WHERE definition LIKE '%sp[_]OA%';
要一次对所有数据库执行此操作:
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += CHAR(13) + CHAR(10)
+ 'SELECT ''' + name + ''', o.name, m.definition
FROM ' + QUOTENAME(name) + '.sys.objects AS o
INNER JOIN ' + QUOTENAME(name) + '.sys.sql_modules AS m
ON o.[object_id] = m.[object_id]
WHERE m.definition LIKE ''%sp[_]OA%'';'
FROM sys.databases;
EXEC sp_executesql @sql;
您还可以检查作业步骤。
SELECT j.name, s.step_name, command
FROM msdb.dbo.sysjobsteps AS s
INNER JOIN msdb.dbo.sysjobs AS j
ON s.job_id = j.job_id
WHERE s.command LIKE '%sp_OA%';
您是否在系统目录中搜索过可能调用它们的存储过程?在您看到以下内容的数据库中:
要一次对所有数据库执行此操作:
您还可以检查作业步骤。
如果您在那里没有找到任何东西,您将需要运行服务器端跟踪,因为它必须来自临时批次。