2013-09-23 121 views
1

我想每3秒钟在Management Studio中执行一次查询以满足监视/维护需求。我知道我可以定义一个工作或使用外部应用程序。但我正在寻找更简单的东西。类似下面的伪:SQL Server执行查询每个时间间隔

DECLARE @Interval INT 
SET @Interval = 3000 -- I'm expecting milliseconds 
BEGINLOOP (@Interval) 
    SELECT * FROM MyTransactions 
ENDLOOP 

我想输出每3秒刷新一次。那可能吗?

回答

4

您可以在循环中使用WAITFOR。您可以在WAITFOR语句中指定间隔时间。

像这样:

WHILE 1=1 
BEGIN 
    WAITFOR DELAY '00:00:05' -- Wait 5 seconds 

    SELECT * FROM MyTransactions 

    -- Break on some condition 
END 
+0

这必须是答案。但是,输出不刷新,它追加到前一个结果。我们能避免吗? – yazanpro

+0

您可以将这些行插入表中(如果金额较小),并在需要时可以查询该表。 –

+0

尝试在Select语句后添加GO。不知道这是否会强制ouptput,但它可能会。您也可以将查询的输出发送到临时表,并通过SSMS中的另一个连接查询临时表。 –

0
DECLARE @Interval INT; 
SET @Interval = 3000; 

DECLARE @Delay DATETIME; 
SET @Delay = DATEADD(MILLISECOND, @Interval, 0); 

DECLARE @i INT; 
SET @i = 1; 
WHILE @i <= 1000 
BEGIN 
    WAITFOR DELAY @Delay; 

    PRINT @i; -- Do something 

    SET @i = @i + 1; 
END 
0
DECLARE

@i INT = 1;

WHILE(@i < = 60) BEGIN WAITFOR DELAY '00:00:05'

/*Your Script*/ 

SET @i = @i + 1; END print'completed'

+0

详细说明您的答案 –