SQL Server实例随机挂起

时间:2018-08-21 14:48:08

标签: sql-server tsql ssis sql-server-2014

我使用SSIS目录中的SSIS程序包每5分钟运行一次SQL Server代理作业,该程序包执行以下操作:

  1. 在OLTP_DB上删除所有现有数据
  2. 从生产数据库中提取数据
  3. 删除OLAP_DB上的所有现有数据,然后
  4. 将数据从OLTP_DB转换为OLAP_DB ...

问题

我上面提到的那个工作由于某种我不知道的原因而随机挂起, 我只是意识到使用活动监视器,每次挂起它都会显示类似以下内容:

enter image description here

如果我尝试对该数据库运行任何查询,它都不会响应,只是说正在执行...。在我停止工作之前什么也没有发生。

该作业的平均运行时间为5或6分钟,但是如果挂起它,即使我不停止它,它也可以保持运行数天。 :(

我做了什么

  • 设置delayValidation:真
  • 改进了我的查询
  • 没有交易在运行
  • 没有锁定或阻止(我想)
  • 重建和组织索引
  • DBCC FREEPROCCACHE
  • DBCC FREESESSIONCACHE
  • ETC .....

我的设置:

  • 简单的恢复模式
  • SSIS OLE DB目标  1保持身份(选中)  2保留空值(选中)  3桌锁(已选中)  4-检查约束(未检查)  每批行(空白)  最大插入提交大小(2147483647)

注意:

我还有另一项工作,即在相同实例但数据库不同的情况下也运行ssis软件包(小),并且当上述主ETL挂起时,有时会有一个小实例,这就是为什么我认为问题出在实例上(我猜)。

我愿意根据需要提供更多信息。

任何帮助或帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

正如Joeren Mostert所说,它正在显示CXPACKET,这意味着它正在并行执行一些工作。 (cxpacket) 它还显示了ASYNC_NETWORK_IO(async_network_io),这意味着它也在将数据传输到网络。

可能有很多原因。只是一些提示:
-您是否检查网络连接速度是否较慢?
-与网络速度相比,正在传输的数据量是多少?
-是否正在运行可能会减慢数据传输速度的防病毒软件?

我的猜测是有很多数据要传输,并且要花很长时间。我会认为是I / O还是网络,但是由于您有一个asyn_network_io占用了大部分累积等待时间,因此我会选择网络。

答案 1 :(得分:0)

就像@Jeroen Mostert和@Danielle Paquette-Harvey Said一样,通过使用活动监视器进行右键单击,我可以弄清楚我有一个并行执行的对象(由于过去的某种原因),以解决此问题。我删除了并行结构,并将所有内容分批运行。 现在它就像魅力一样工作!

之前: enter image description here

之后:

enter image description here