确定每晚运行的SQL Server作业的来源

时间:2016-10-20 08:39:54

标签: sql-server

我正在研究使用SQL Server Express(Microsoft SQL Server 2014(SP2)(KB3171021) - 12.0.5000.0(X64))作为后端数据库的应用程序的性能问题。

我使用扩展事件记录运行缓慢的查询。看看这些我发现了一个每天晚上运行一系列查询的工作,其中一些查询需要相当长的时间。最长的单个查询需要10分钟左右。它似乎是某种报告,收集有关它正在查看的表中所有内容的广泛信息。

这似乎是一个自动化过程,每晚都在同一时间运行,每晚执行的时间大约相同(大约20分钟)。

它在具有管理权限的Windows帐户上运行,该权限使用Windows身份验证连接到SQL。还有其他合法的东西,我们知道也在这个帐户上运行。

客户不知道它是什么。

记录的应用名称只是" .Net SqlClient数据提供商"我相信这是一个普通的默认值。

这与正确标识自身的客户端应用程序不同。我已经向客户端确认了针对数据库运行的所有其他内容 - 例如,还有一些其他作业会生成会计电子邮件。

我无法找到对应的Windows计划任务中的任何内容,而SQL Express显然没有SQL Server代理 - 我已识别的所有其他SQL作业都安排在Windows计划任务中。

我已经尝试过启用登录审核,但我可以看到登录信息发生了,但它提供的信息更少,甚至没有给我客户端应用名称。

我没有理由相信它在任何方面都是恶意的,它很可能是多年前建立的,而且只是被遗忘了。

关于如何确定这来自哪里的任何想法?

2 个答案:

答案 0 :(得分:0)

通过使用类似sp_who的内容,您可以找到每个用户连接的主机名。也许这可以给你一个关于在哪里看的提示?

答案 1 :(得分:0)

当你认为神秘程序正在运行时,你需要这样做。 在实际的SQL服务器上打开远程桌面Windows会话,因为您非常确定它正在运行的位置。 准备好TaskMgr.exe。转到“详细信息”选项卡,以便您可以按TaskManager PID(而不是SQL PID)进行搜索。按此TaskMgr PID排序 右键单击此“详细信息”选项卡顶部的“列”。选择“选择列” 添加此列...     命令行

当您认为神秘程序正在运行时,运行以下sql。

select x.host_process_id as USE_ME_TaskMgr_PID_OnClient_PC       
     , x.host_name as PCNameFromClient 
     , x.program_name as ProgNmFromClient   
     , x.client_interface_name
     , x.original_login_name 
     , x.login_name 
     , x.nt_domain 
     , x.nt_user_name
     , x.* 
   FROM sys.dm_exec_sessions x 
   order by x.host_name DESC 
          , x.program_name DESC          
   GO

看看这个sql的第一列。在列表中找到您的神秘程序。取第一个值。这是Program PID,它将是TaskMgr PID上的PID。然后,您将看到命令行完整执行目录路径。