SQL 服务器实例随机挂起
SQL server Instance hanging randomly
我有一个 SQL 服务器代理作业 运行 每 5 分钟使用 SSIS 目录中的 SSIS 包,该包做:
- 删除 OLTP_DB
上的所有现有数据
- 从生产数据库中提取数据
- 删除 OLAP_DB 上的所有现有数据,然后
- 提取从 OLTP_DB 转换为 OLAP_DB 的数据 ...
问题
我上面提到的那份工作由于某种我不知道的原因随机挂起,
我刚刚意识到使用 activity 监视器,每次它挂起时都会显示如下内容:
如果我尝试运行对该数据库的任何查询,它不会响应只是说正在执行....并且在我停止作业之前没有任何反应。
该作业的平均 运行ning 时间是 5 或 6 分钟,但当它挂起时,如果我不停止它,它可以保持 运行ning 几天。 :(
我做了什么
- 设置延迟验证:真
- 改进了我的查询
- 无交易运行宁
- 没有锁定或阻塞(我猜)
- 重建和整理索引
- 运行
DBCC FREEPROCCACHE
- 运行
DBCC FREESESSIONCACHE
- 等等.......
我的设置:
- 简单恢复模式
- SSIS OLE DB 目标
1-保持身份(选中)
2-保留空值(选中)
3-Table 锁(勾选)
4-检查约束(未检查)
每批行数(空白)
最大插入提交大小(2147483647)
注:
我还有另一份工作 运行也在同一个实例但不同的数据库中安装一个 ssis 包(小),当上面提到的主要 ETL 挂起时,有时这个小的,这就是为什么我认为问题出在实例上(我猜)。
我愿意根据需要提供更多信息。
任何协助或帮助将不胜感激!
正如 Joeren Mostert 所说,它正在显示 CXPACKET,这意味着它正在并行执行一些工作。 (cxpacket)
它还显示 ASYNC_NETWORK_IO (async_network_io),这意味着它也在向网络传输数据。
可能有很多原因。还有一些提示:
- 您是否检查过网络连接是否缓慢?
- 传输的数据大小与网络速度的关系是多少?
- 是否有可能减慢数据传输速度的防病毒软件 运行?
我的猜测是有很多数据要传输,而且需要很长时间。我会考虑 I/O 或网络,但由于您有一个 asyn_network_io 占用了大部分累积等待时间,我会选择网络。
正如@Jeroen Mostert 和@Danielle Paquette-Harvey 所说,通过使用 activity 监视器进行右键单击,我发现我有一个并行执行的对象(过去出于某种原因) ),为了解决这个问题,我删除了并行结构并将所有内容一次性放入 运行。
现在它就像一个魅力!
之前:
之后:
我有一个 SQL 服务器代理作业 运行 每 5 分钟使用 SSIS 目录中的 SSIS 包,该包做:
- 删除 OLTP_DB 上的所有现有数据
- 从生产数据库中提取数据
- 删除 OLAP_DB 上的所有现有数据,然后
- 提取从 OLTP_DB 转换为 OLAP_DB 的数据 ...
问题
我上面提到的那份工作由于某种我不知道的原因随机挂起, 我刚刚意识到使用 activity 监视器,每次它挂起时都会显示如下内容:
如果我尝试运行对该数据库的任何查询,它不会响应只是说正在执行....并且在我停止作业之前没有任何反应。
该作业的平均 运行ning 时间是 5 或 6 分钟,但当它挂起时,如果我不停止它,它可以保持 运行ning 几天。 :(
我做了什么
- 设置延迟验证:真
- 改进了我的查询
- 无交易运行宁
- 没有锁定或阻塞(我猜)
- 重建和整理索引
- 运行
DBCC FREEPROCCACHE
- 运行
DBCC FREESESSIONCACHE
- 等等.......
我的设置:
- 简单恢复模式
- SSIS OLE DB 目标 1-保持身份(选中) 2-保留空值(选中) 3-Table 锁(勾选) 4-检查约束(未检查) 每批行数(空白) 最大插入提交大小(2147483647)
注:
我还有另一份工作 运行也在同一个实例但不同的数据库中安装一个 ssis 包(小),当上面提到的主要 ETL 挂起时,有时这个小的,这就是为什么我认为问题出在实例上(我猜)。
我愿意根据需要提供更多信息。
任何协助或帮助将不胜感激!
正如 Joeren Mostert 所说,它正在显示 CXPACKET,这意味着它正在并行执行一些工作。 (cxpacket)
它还显示 ASYNC_NETWORK_IO (async_network_io),这意味着它也在向网络传输数据。
可能有很多原因。还有一些提示:
- 您是否检查过网络连接是否缓慢?
- 传输的数据大小与网络速度的关系是多少?
- 是否有可能减慢数据传输速度的防病毒软件 运行?
我的猜测是有很多数据要传输,而且需要很长时间。我会考虑 I/O 或网络,但由于您有一个 asyn_network_io 占用了大部分累积等待时间,我会选择网络。
正如@Jeroen Mostert 和@Danielle Paquette-Harvey 所说,通过使用 activity 监视器进行右键单击,我发现我有一个并行执行的对象(过去出于某种原因) ),为了解决这个问题,我删除了并行结构并将所有内容一次性放入 运行。 现在它就像一个魅力!
之前:
之后: