Jeb*_*Jeb 99
是的,在MS SQL Server中,您可以创建预定作业.在SQL Management Studio中,导航到服务器,然后展开SQL Server代理项,最后展开Jobs文件夹以查看,编辑和添加预定作业.
Tho*_*att 39
如果正在使用MS SQL Server Express Edition,则SQL Server代理不可用.我发现以下适用于所有版本:
USE Master
GO
IF EXISTS( SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[MyBackgroundTask]')
AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[MyBackgroundTask]
GO
CREATE PROCEDURE MyBackgroundTask
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- The interval between cleanup attempts
declare @timeToRun nvarchar(50)
set @timeToRun = '03:33:33'
while 1 = 1
begin
waitfor time @timeToRun
begin
execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure];
end
end
END
GO
-- Run the procedure when the master database starts.
sp_procoption @ProcName = 'MyBackgroundTask',
@OptionName = 'startup',
@OptionValue = 'on'
GO
Run Code Online (Sandbox Code Playgroud)
一些说明:
Cia*_*her 18
是的,如果您使用SQL Server代理.
打开企业管理器,转到您感兴趣的SQL Server实例下的Management文件夹.在那里您将看到SQL Server代理,在其下方您将看到"作业"部分.
在这里,您可以创建一个新工作,您将看到需要创建的步骤列表.创建新步骤时,可以指定实际运行存储过程的步骤(键入TSQL脚本).选择数据库,然后为命令部分输入如下内容:
exec MyStoredProcedure
Run Code Online (Sandbox Code Playgroud)
这是概述,如果您需要任何进一步的建议,请回到此处.
[我实际上以为我可能会先进入这个,男孩我错了:)]
可能不是您正在寻找的答案,但我发现仅使用Windows Server任务计划程序更有用
您可以直接使用该命令 sqlcmd.exe -S "." -d YourDataBase -Q "exec SP_YourJob"
甚至创建一个.bat
文件.所以你甚至可以按需点击2次任务.
这也是在这里找到的
我将添加一件事:我在那里,我们曾经有过一堆每天晚上都要运行的批处理作业.但是,我们正在逐渐远离使用在Windows计划任务中安排的客户端应用程序,这些任务将启动每项工作.至少有三个原因:
这是一个真正简短的VB.Net应用程序:如果有人感兴趣,我可以发布代码.
您可以使用SQL Server Service Broker创建自定义机制。
想法(简化):
编写一个开始对话的存储过程/触发器(BEGIN DIALOG)作为环回(从 my_service 到 my_service) - 获取对话处理程序
DECLARE @dialog UNIQUEIDENTIFIER;
BEGIN DIALOG CONVERSATION @dialog
FROM SERVICE [name]
TO SERVICE 'name'
...;
Run Code Online (Sandbox Code Playgroud)启动对话计时器
DECLARE @time INT;
BEGIN CONVERSATION TIMER (@dialog) TIMEOUT = @time;
Run Code Online (Sandbox Code Playgroud)在指定的秒数后,将向服务发送一条消息。它将与关联的队列一起入队。
CREATE QUEUE queue_name WITH STATUS = ON, RETENTION = OFF
, ACTIVATION (STATUS = ON, PROCEDURE_NAME = <procedure_name>
, MAX_QUEUE_READERS = 20, EXECUTE AS N'dbo')
, POISON_MESSAGE_HANDLING (STATUS = ON)
Run Code Online (Sandbox Code Playgroud)程序将执行特定代码并重新启动计时器以再次触发。
你能找到Micha写的完全成熟的解决方案(T-SQL)吗?粘性物?称为任务计划程序
博客的要点:
优点:
建议区分:
SQL Server 代理(维护):
任务调度器(业务流程):
如何设置:
[tsks].[tsksx_task_scheduler]
以添加新任务(列名称是自描述的,包括示例任务)警告:博客是用波兰语写的,但相关的源代码是英文的,很容易理解。
警告2:使用前请确保已在非生产环境中测试过。
归档时间: |
|
查看次数: |
164487 次 |
最近记录: |