2011-07-01 99 views
8

我会假设我要问的内容通常会落在“不好的做法”的范围内,但我想问一问,因为这个功能对于诊断问题和长时间运行脚本的基准测试很有用。有没有办法在脚本中暂停或等待片刻?

总之,是否有一个内置于SQL Server中的函数,我可以称之为允许我“暂停”一小段时间?

我有一个每晚导出数据的SSIS过程生成统计数据的各种子集。每当我在SSIS包的执行时间上遇到困难时,我都会有一系列诊断存储过程,我可以通过这些诊断存储过程来帮助诊断出口/批量插入执行的时间特别长。

在我生成统计数据的SSIS过程的后半部分,如果我可以分析过程可能陷入停滞的时间或分析可以修改数据表中数据的速度有多快,那将非常有益。大多数静态过程都是通过将数据插入到通过WHILE循环循环的表中开始的,并在满足必要条件时进行更新。

我可以很容易地查询我的数据,以捕获特定指标,同时执行统计存储过程。我想要做的是抓住该指标,等待1秒钟(或某个特定的时间),然后再次获取指标,以便我可以比较它们。通过能够实现“暂停”,我可以创建更强大的诊断脚本,以便每秒开始执行多少次插入,更新或计算,从而可以估计我的更大程序的哪些部分花费的时间最长。

我假设可能有一些诊断工具可以在SQL Server Management Studio中使用。我承认,我没有对此做任何修改。但是,通常如果SSMS中有一个工具,后端功能中的大部分都可以通过某种形式的奇特脚本来模拟。使用任何内置诊断程序的另一个可能的限制是,我希望在SSIS软件包运行时运行这些指标,而不仅仅是测试在软件包中执行的存储过程。

感谢球员的任何解决方案或提示!这个要求并不是100%必要的,但是我每晚的SSIS套餐变得非常庞大,我不得不开始微调我以前能够忽略的“挤压轮”。

+2

怎么样实现一个记录表的方法,你的长期运行的程序执行过程中插入时间戳和状态信息到一个单独的表?这种方式的结构良好的跟踪将使您能够确定您感兴趣的指标,不是吗? –

回答

8

你会使用WAITFOR DELAY声明

+0

这就是我要找的。我确实尝试过谷歌这种类型的东西(诚实!),但我找不到它。谢谢。 – RLH

7

选择GETDATE() - 等待10秒钟,运行另一个命令

WAITFOR DELAY '00:00:10' ; --accept值HH:mm:ss的

选择GETDATE()

相关问题