【发布时间】:2021-04-12 19:31:51
【问题描述】:
我用谷歌搜索并阅读了许多问题/答案,但只有一个问题听起来完全一样,而且没有答案。
情况:
我的小组有多个运行 SQL Server 2017 的 SQL Server。它们的配置几乎相同。
这些服务器是构建盒,这意味着它们从数据仓库或提取文件中提取数据,运行一些 ETL 处理,然后推送到产品盒。 SSIS 包部署在 DB 所在的盒子上。
就在一个多月前(没有发生更新),其中一台服务器开始出现问题,即运行 SSIS 包的所有作业都会“挂起”在运行包的步骤上。任何其他步骤运行正常。但是运行包的作业步骤(所有作业都这样做)甚至不会启动包。该包在执行中没有任何迹象表明有任何东西试图启动它。
如果用户执行部署的包,它将成功运行。
唯一能“解决”问题的是重新启动代理服务。
我创建了一个简单的作业,每 5 分钟运行一个简单的包。它已经运行了大约一周,最后一次运行是 2021 年 4 月 11 日凌晨 2:40,2:45 运行挂起。我在当时发生的事件日志中找不到任何东西。服务器在 3:15 以正常的计划进程重新启动,并在 3:25 前在线,因为那是它下一次尝试运行并且再次挂起。所以即使重新启动服务器也不能解决问题。
我束手无策,因为没有错误(作业挂起,程序包甚至没有启动),我找不到显示任何问题的日志记录,我不知道可能发生什么导致这个。
提前致谢。
【问题讨论】:
-
如果您在包处于不确定状态时运行whoisactive,SQL Server 认为与该作业相关的情况是什么?如果您创建一个新的 Hello World 等效包并将其安排为每 N 分钟运行一次,您会得到相同的挂起行为吗?
-
它没有看到从作业中运行的任何内容。我确实设置了一个这样的简单作业,它每 5 分钟运行一次,并且在 2:40 到 2:45 之间的某个时间开始挂起(2:40 的作业运行良好,2:45 的作业挂起)。
-
出色的调试步骤。因此,当它挂起时,如果您能够远程进入该框,请查看任务管理器/进程资源管理器。查找任何/所有正在运行的 dtexec 进程,然后 /shrug 尝试确定它们是否是 SSIS 正在等待的进程。近十年来,我一直在项目部署模型 (SSISDB) 上运行大量流程,但没有经历过您遇到的问题。在事情变得奇怪的时候,是否有可能在盒子上安装了防病毒软件或更新了定义?任何使用 COM 对象运行的 SSIS 包?外部程序正在运行?
-
是的,我从 SQL 7.0 开始就在这个小组中这样做了,而且从未见过这种行为。我发现只有一篇有很多谷歌搜索的帖子,看起来确实很匹配,但没有答案(大多数听起来相同的帖子都有失败或需要查看的错误)。昨天有些事情导致它清理了,所以我现在想看看是否有什么变化导致了这种情况。下次发生时我会尝试您的建议(似乎每周至少发生一次。
-
我终于找到了问题所在。我们有一项使用 CMDEXEC 将文件解压缩到文件服务器的工作。该文件已经存在并且命令未设置为覆盖,因此它被挂起,并且由于某种原因导致执行 SSIS 包的作业步骤挂起。现在我将与开发人员一起解决这个问题并以另一种方式处理它。感谢您的意见。
标签: sql-server ssis jobs