如何在SQL Server中每5分钟运行一次查询



我想每5分钟运行一次查询。我想知道SQL Server中是否存在类似计时器的东西。

这对我真的很有帮助。我在谷歌上搜索了很多,但没有得到任何帮助。

非常感谢您的建议。Pooja

您可以通过gui或使用以下存储过程创建SQL代理作业:https://technet.microsoft.com/en-us/library/ms181153(v=sql.105).aspx

另请查看此示例(借用自https://www.mssqltips.com/sqlservertip/3052/simple-way-to-create-a-sql-server-job-using-tsql/):

USE msdb
go
CREATE procedure [dbo].[sp_add_job_quick] 
@job nvarchar(128),
@mycommand nvarchar(max), 
@servername nvarchar(28),
@startdate nvarchar(8),
@starttime nvarchar(8)
as
--Add a job
EXEC dbo.sp_add_job
    @job_name = @job ;
--Add a job step named process step. This step runs the stored procedure
EXEC sp_add_jobstep
    @job_name = @job,
    @step_name = N'process step',
    @subsystem = N'TSQL',
    @command = @mycommand
--Schedule the job at a specified date and time
exec sp_add_jobschedule @job_name = @job,
@name = 'MySchedule',
@freq_type=1,
@active_start_date = @startdate,
@active_start_time = @starttime
-- Add the job to the SQL Server Server
EXEC dbo.sp_add_jobserver
    @job_name =  @job,
    @server_name = @servername

exec dbo.sp_add_job_quick 
@job = 'myjob', -- The job name
@mycommand = 'sp_who', -- The T-SQL command to run in the step
@servername = 'serverName', -- SQL Server name. If running localy, you can use @servername=@@Servername
@startdate = '20130829', -- The date August 29th, 2013
@starttime = '160000' -- The time, 16:00:00

创建一个批处理文件,并使用windows调度程序每五分钟触发一次。或者在中编写服务。净

  1. 使用SQL Server代理作业

  2. 维护计划

  3. Windows作业调度程序

  4. 在SSMS查询窗口上运行的技巧(不建议用于生产或主计划)

如果你需要在SSMS上运行一个简单的查询,你可以使用WAITFOR DELAY语句

例如:

Declare @a int = 0
WHILE 1=1
BEGIN
  -- Example code
  EXEC sp_WhoIsActive -- You can write you query or code
  WAITFOR DELAY '00:05:00'
  IF @a = 10
     Break;
  SET @a = @a + 1
END

参数@a对于运行计数很重要。限制在此查询中运行10次。,或者此查询一直运行到,您的会话处于打开状态。当您关闭会话或停止运行时,此查询将停止工作。

这不是一个最佳实践,并用于典型的工作技巧。为了测试,检查结果。。。这不是生产长时间的想法

最新更新