2011-03-25 58 views
20

有没有办法在Microsoft SQL Server Management Studio(SQL Server 2008 R2)中自动刷新查询结果?在ms sql server management studio中自动刷新查询?

目前我正在调试一个应用程序,该应用程序会自动在数据库中插入和更新数据,并且我想跟踪进度而不必在F5键上放置重物。

回答

40

试试这个:

SELECT GETDATE()    --your query to run 
raiserror('',0,1) with nowait --to flush the buffer 
waitfor delay '00:00:10'  --pause for 10 seconds 
GO 5       --loop 5 times 

它将运行查询5次,每次运行之间的10秒暂停

输出:

Beginning execution loop 

----------------------- 
2011-03-25 11:03:57.640 

(1 row(s) affected) 


----------------------- 
2011-03-25 11:04:07.640 

(1 row(s) affected) 


----------------------- 
2011-03-25 11:04:17.640 

(1 row(s) affected) 


----------------------- 
2011-03-25 11:04:27.640 

(1 row(s) affected) 


----------------------- 
2011-03-25 11:04:37.640 

(1 row(s) affected) 

Batch execution completed 5 times. 
+1

@RacerX - 如果你想让它每10秒运行一次,没有5的上限会怎么样? – 2011-03-25 15:09:12

+1

@Sachin Shanbhag,你需要'count'来循环,参见[GO(Transact-SQL)](http://msdn.microsoft.com/en-us/library/ms188037.aspx)。 “count”是一个整数,所以它可以很大:2,147,483,647。所以只需使用'GO 2147483647' – RacerX 2011-03-25 15:12:30

+1

但是你需要刷新缓冲区。在waitfor之前添加'nowait'的raiserror('',0,1)。 – 2011-03-25 15:15:08

7

我能想到的唯一的事情将会从SSMS那里得到一个WAITFOR选项的循环。问题是你的输出查询窗口只会有多个结果集,每个结果集在你的过程中比在它之前的每个结果集都要晚。

在这种情况下,我通常建议构建一个简单的网页,从本地机器上运行。构建它以进行查询,并将其设置为每间隔(30-60-90秒)自动刷新。

但是那将在SSMS之外。

+1

+1这实际上是一个好点。我似乎记得可能有100个结果集限制或类似的东西。 (编辑:也许这是2005年,我看到了。) – 2011-03-25 15:30:03

+0

我运行了相同的安装程序,因为我的答案很多很多结果集没有问题。我在文本模式下运行,唯一的问题是复制/粘贴内存限制。如果我期待大型结果集,我将输出运行到一个文件中,您可以随着它的增长对其进行编辑,以了解其中发生了什么。 – RacerX 2011-03-25 15:40:26

+0

WAITFOR在一个循环中是一个不错的建议,但使用“GO 1000”requries少了一些干扰我的SQL查询的行。 (也使一个网页会对这种情况矫枉过正) – grimmig 2011-03-28 06:21:49

相关问题