我认为我要提出的问题通常属于“不良做法”的范畴,但我想问一下,因为这个功能对诊断问题很有用,并且可以用来标记长时间运行的脚本。
简而言之,是否有一个内置于SQL Server中的函数可以让我在短时间内“暂停”?
我有一个夜间SSIS流程,在导出数据后生成各种统计数据子集。每当我遇到SSIS包的执行时间问题时,我都会调用一系列诊断存储过程来帮助诊断哪些导出/批量插入需要特别长的时间才能执行。
在我的SSIS流程的后半部分,我生成统计数据的过程中,如果我可以分析流程可能陷入困境的位置,或者分析它在数据表中修改数据的速度,那将是非常有益的。大多数静态过程都是将数据插入到通过WHILE循环循环的表中,并在满足必要条件时进行更新。
我可以轻松地查询我的数据,以便在我的统计存储过程执行时捕获特定的指标。我想要做的是获取该指标,等待1秒钟(或一段特定的时间)并再次获取指标,以便我可以比较它们。
通过能够实现'暂停',我可以创建更强大的诊断脚本,从而确定每秒开始执行多少次插入,更新或计算,从而可以估计我的更大程序的哪些部分花费的时间最长。
我认为可以在SQL Server Management Studio中使用一些诊断工具。我承认,我没有修改任何一个。但是,通常如果SSMS中有一个工具,很多后端功能都可以通过某种形式的花哨脚本来模仿。使用任何内置诊断程序的另一个可能的限制是,我更喜欢在SSIS包运行时运行这些指标,而不仅仅是在我测试在包中执行的存储过程时。
感谢大家的任何解决方案或提示!这个要求并非100%必要,但我的夜间SSIS包装正在变得越来越大,我不得不开始微调我过去无法忽视的“吱吱作响的轮子”。
答案 0 :(得分:15)
也许您正在寻找WAITFOR DELAY
答案 1 :(得分:8)
您使用WAITFOR DELAY声明
答案 2 :(得分:8)
选择Getdate() - 等待10秒钟再运行另一个命令
WAITFOR DELAY '00:00:10'; --accept value hh:mm:ss
选择GetDate()