我见过这种情况发生过几次: sp_WhoIsActive用我的用户名显示了各种sp_OA%脚本,但我肯定不会直接运行它们。这是否反映了某种查询重写过程?它似乎与跨远程服务器的查询相关。
发布于 2012-05-01 21:02:38
您是否在系统目录中搜索可能正在调用它们的存储过程?在DBs中,您可以看到以下内容:
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%';
如果您在那里找不到任何东西,您将需要运行服务器端跟踪,因为它必须来自特定批处理。
https://dba.stackexchange.com/questions/17322
复制相似问题