我正在研究使用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计划任务中。
我已经尝试过启用登录审核,但我可以看到登录信息发生了,但它提供的信息更少,甚至没有给我客户端应用名称。
我没有理由相信它在任何方面都是恶意的,它很可能是多年前建立的,而且只是被遗忘了。
关于如何确定这来自哪里的任何想法?
答案 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。然后,您将看到命令行完整执行目录路径。