标签: sql-server-agent

如何防止Sql Server作业同时运行

我的SQL代理中有一些预定的作业:

  • Job1,每2分钟执行一次
  • Job2,每10分钟执行一次
  • Job3,每15分钟执行一次

如您所见,多个作业可以同时运行.当这些作业同时运行时,它会导致CPU使用率达到100%.

有解决方案吗?有没有办法控制同时运行的作业数量?注意:我需要这些工作大约在适当的时间段内运行.

sql-server concurrency sql-server-agent

9
推荐指数
1
解决办法
3186
查看次数

如何准确检测SQL Server作业是否正在运行并处理已在运行的作业?

我目前正在使用这样的代码来检测SQL服务器作业是否正在运行.(这是SQL Server 2005,所有SP的)

return (select isnull(  
(select top 1 CASE 
    WHEN current_execution_status = 4 THEN 0
    ELSE 1
    END
from openquery(devtestvm, 'EXEC msdb.dbo.sp_help_job')
where current_execution_status = 4 and
    name = 'WQCheckQueueJob' + cast(@Index as varchar(10))
), 1)
)
Run Code Online (Sandbox Code Playgroud)

那里没有问题,一般来说,它运作得很好.

但....(总是一个但是)

有时,我会调用它,取回"工作未运行"的结果,此时我会尝试通过以下方式启动工作

exec msdb.dbo.sp_start_job @JobName
Run Code Online (Sandbox Code Playgroud)

并且SQL将返回"SQLAgent拒绝启动该作业,因为它已经有待处理的请求".

好.也不是问题.可以想象,在此代码启动之前,可以启动目标作业的一个小窗口,但在检查它是否已启动之后.但是,我可以将它包装在try catch中,然后忽略错误,对吧?

begin try
if dbo.WQIsQueueJobActive(@index) = 0 begin
    exec msdb.dbo.sp_start_job @JobName
    break
end         
end try begin catch
    -- nothing here
end catch
Run Code Online (Sandbox Code Playgroud)

不过这是问题所在.

10次​​中有9次,这很好用.SQL代理将引发错误,它被捕获,并且处理继续,因为作业已经运行,没有任何伤害没有犯规.

但偶尔,我会在"作业历史记录"视图中收到一条消息(请记住上面的代码,以检测特定作业是否正在运行,如果没有实际从另一个作业运行则启动它)说该作业失败,因为"SQLAgent已经拒绝开始工作,因为它已经有待处理的请求".

当然,这是TRY CATCH应该处理的确切错误!

当发生这种情况时,正在执行的工作就会消失,但不能立即从我所知道的情况开始,只是非常接近.我把日志记录到了所有地方并且没有一致性.有一次它失败了,它将在a处,a下一次在b处.在某些情况下,地方A和地方B只有一个

select @var = 'message'
Run Code Online (Sandbox Code Playgroud)

在他们之间.很奇怪.基本上,这项工作似乎是毫不客气地被抛弃的,而且在工作中要执行的任何事情都不会被执行.

但是,如果我删除"exec …

t-sql sql-server sql-server-agent sql-agent-job

9
推荐指数
1
解决办法
2万
查看次数

获取上次成功上班的日期?

我有一个执行存储过程的步骤作业.我想获得上次成功执行作业的日期,以便我可以更新delta而不是整个数据集.

现在我的作业设置每天运行一次,所以我有一个默认参数,如果它为null我将它设置为GETDATE() - 1所以我还在更新delta但是我想要做的是设置上次成功执行作业的日期.

exec dbo.usp_UpdateFrom @LastSuccessfulExecutionTime
Run Code Online (Sandbox Code Playgroud)

目前的程序是这样的

CREATE PROCEDURE dbo.usp_UpdateFrom
    @FromDate datetime = NULL --would like to pass last successful execution time of the job
AS
    IF @FromDate IS NULL
        SET @FromDate = GETDATE() - 1

    -- do stuff
END
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-agent

8
推荐指数
2
解决办法
3万
查看次数

如何在C#中监视SQL Server代理作业信息

我需要创建一个应用程序来监视SQL Server 2000代理作业状态和信息当作业发生时与Windows应用程序事件日志中显示相同.现在我已经通过连接字符串连接到数据库,但我不知道如何从Job获取状态和信息.

我需要在Textbox上显示状态和信息.

您有什么建议怎么办?

开发者工具 :

  1. MS SQL Sever 2000 SP4
  2. MS Visual Studio 2008(C#)

我是菜鸟程序员.

c# sql-server-agent sql-server-2000

8
推荐指数
2
解决办法
2万
查看次数

禁用/启用SQLServer代理作业的正确方法

我有许多SQLServer代理预定作业,其中一个执行完整数据库备份.我希望在备份开始时禁用其他一些作业,并在备份完成后重新启用它们.这样做的正确方法是什么?我正在考虑将以下tsql命令之一添加到备份任务的第一步(以及相应的启用命令到最后一步),但我找不到哪一个更好(或者可能有另一种方式).

UPDATE MSDB.dbo.sysjobs
SET Enabled = 0
WHERE [Name] IN (....)
Run Code Online (Sandbox Code Playgroud)

还是一些EXEC dbo.sp_update_job
谢谢.

sql-server sql-server-agent

8
推荐指数
2
解决办法
1万
查看次数

Messenger服务尚未启动 - 将不会发送NetSend通知

在我的SQL Server代理中,我没有设置任何通知,那么为什么会出现此错误?

我运行pakg通过dtsexec它成功执行,我也运行一个简单的工作,插入记录它成功运行,但在工作步骤中我选择文件系统,并给出包路径和运行作业,它给了我错误:

Messenger服务尚未启动 - 将不会发送NetSend通知

我办理登机手续services.msc但没有像窗口信使这样的服务,我也检查过gpedit,有一个窗口信使,我应用它的所有三个选项启用,禁用,不一个一个配置,但没有摆脱该错误.

任何帮助将不胜感激,提前致谢.

sql-server sql-server-agent sql-server-2008-r2

8
推荐指数
1
解决办法
3万
查看次数

sp_start_job等待工作完成

可能重复:
从存储过程执行SQL Server代理作业并返回作业结果

有没有办法确定sql代理作业何时在使用sp_start_job启动后完成?

sql-server sql-server-agent

7
推荐指数
2
解决办法
3万
查看次数

SQL Server Agent在哪里保存作业?

我的服务器已关闭,我只能从中获取硬盘.我找到了我的数据库并复制了它,但我可以在哪里找到代理工作?他们在哪里救了?

sql sql-server sql-server-agent restore

7
推荐指数
2
解决办法
2万
查看次数

对对象“sp_sqlagent_update_agent_xps”、数据库“msdb”、架构“dbo”的 EXECUTE 权限被拒绝。[SQLSTATE 42000](错误 229)

我已经安装了 SQL Server 2016 Express 版本,还安装了 SSMS 18.4,现在重新启动 SQL Server 代理服务时遇到问题。

我可以使用我的系统用户登录,但无法使用默认用户名登录,例如:dot (.) or (local) or saaccount。

sql-server-agent sql-server-express

7
推荐指数
1
解决办法
2万
查看次数

如何批量修改所有sql server代理作业中的作业步骤命令

我有很多工作,可以将1个特定的电子邮件发送到人员列表.这个rec​​iepients列表在step命令中是硬编码的,我需要在所有作业中从该列表中删除一个人.

如何遍历Sql Server Agent中的所有作业并修改命令文本以查找+替换特定的文本.

我正在使用sql server 2005并且已经查看了sp_update_jobStep,但似乎并不是我想要的.

干杯.

sql sql-server sql-server-agent sql-server-2005

6
推荐指数
1
解决办法
5947
查看次数