问题标签 [sql-server-agent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SQL Server 代理 - 从 Oracle 更新 SQL 表
这是一个新手问题...是否可以编写一份工作来每晚更新我的 sql (SQL Server 2008) 表 - 从 oracle db?我似乎无法在网上找到任何教程。请帮忙。
我已经在数据源管理器中创建了一个 ODBC 连接......
sql-server - 如何准确检测 SQL Server 作业是否正在运行并处理已经运行的作业?
我目前正在使用这样的代码来检测 SQL 服务器作业是否正在运行。(这是 SQL Server 2005,所有 SP)
那里没有问题,一般来说,它工作得很好。
但是....(总是一个但是)
有时,我会调用它,返回“作业未运行”结果,此时我将尝试通过以下方式启动作业
SQL 将返回“SQLAgent 已拒绝启动作业,因为它已经有一个待处理的请求”。
行。也不是问题。可以想象,在此代码可以启动目标作业之前,但在检查它是否已启动之后,目标作业可以启动的小窗口是可以想象的。但是,我可以将其包装在 try catch 中并忽略错误,对吗?
不过,这就是问题所在。
10次中有9次,这工作得很好。SQL 代理将引发错误,它被捕获,然后继续处理,因为作业已经在运行,没有伤害没有犯规。
但偶尔,我会在 Job History 视图中收到一条消息(记住上面的代码,以检测特定作业是否正在运行,如果没有,则启动它实际上是从另一个作业运行)说作业失败,因为“SQLAgent 有拒绝启动该作业,因为它已经有一个待处理的请求”。
当然,这正是 TRY CATCH 应该处理的错误!
发生这种情况时,正在执行的工作就会死掉,但据我所知,不会立即死掉,只是非常接近。我已经把日志记录在所有地方,并且没有一致性。一次失败,它会在a地,下一次在b地。在某些情况下,地点 A 和地点 B 只有一个
在他们之间。很奇怪。基本上,该作业似乎被毫不客气地转储了,并且该作业中剩下要执行的任何内容都不会+执行。
但是,如果我删除“exec StartJob”(或者只调用一次,当我知道目标作业还不能运行时),一切都会完美运行,并且我在作业中的所有处理都会运行。
这一切背后的目的是让一个工作作为触发器的结果开始(除其他外),如果工作已经开始,真的没有必要“重新开始”。
任何人都曾在 SQL 代理的作业处理中遇到过这样的行为吗?
编辑:当前的控制流程是这样的:
- 更改为表(更新或插入)...
- 触发触发调用...
- 一个存储过程,它调用...
- sp_Start_Job 其中...
- 开始一项特定的工作...
- 调用另一个存储过程(称为 CheckQueue)...
- 执行一些处理并...
- 检查几个表,根据它们的内容可能...
- 在另一个作业上调用 sp_start_job 以启动第二个同时作业来处理额外的工作(第二个作业也调用 CheckQueue 存储过程,但两个调用对完全独立的数据集进行操作)
tsql - 执行 ssrs 报告的 sql 作业显示成功,即使报告陷入死锁
我为 SSRS 报告创建了电子邮件订阅。
当我通过订阅执行报告时,它显示作业已成功完成。但是,由于其中一个表处于锁定状态,因此报告仍在执行中,因此未收到电子邮件。一旦锁定被释放,我就会收到报告的电子邮件。
作业不应该在将其标记为完成之前等待释放锁并发送订阅邮件吗?
sql - SQL 2000 脚本在代理作业溢出时终止它
在等待升级的旧版 SQL 2000 机器上
如果 SQL 代理 2000 中的作业超过设定的持续时间或与另一个代理作业重叠,是否有人有脚本来终止/中止作业。
这导致我们每隔几周就会出现一个严重的问题,一个作业超时然后锁定重新索引作业,并冻结我们的 24 / 7 服务器
sql-server-2008 - 迁移到新服务器后链接服务器的作业失败 (2000 > 2008 R2)
昨晚我们迁移到一个全新的服务器,并将我们所有的数据从 SQL 2000 移动到 SQL 2008 R2。
一切都很好,除了任何具有引用链接服务器的步骤的作业都失败了,我们无法弄清楚原因。
如果我以“sa”身份登录并浏览链接服务器,我可以展开和浏览对象等。我还可以在以“sa”身份登录的查询窗口中运行作业代码,没有任何问题。
但是,当我运行作业时,我得到以下信息:
历史记录:
关于为什么会发生这种情况的任何想法?我认为它与sa帐户有关?
即使我以 sa 身份登录或创建了新的 sysadmin 帐户从头开始重新创建作业,也会发生这种情况。
注意:如果有帮助,我们也会移植 2000-2008 年的登录信息。
谢谢!
sql-server-2005 - 对象“sysjobs”、数据库“msdb”、模式“dbo”的 SELECT 权限被拒绝
尝试读取 SQL 作业时出现以下错误。
对象“sysjobs”、数据库“msdb”、模式“dbo”的 SELECT 权限被拒绝
我怎样才能解决这个问题?
sql-server - 创建 SQL Server 数据库夜间复制的最佳方法
我想创建一个每天晚上运行的工作。我有一个数据库(MyDatabase),我想用(MyDatabase_Stage)复制/替换我的暂存数据库。
我认为最简单的方法是做一些与 SQL Server 代理相关的事情,但我以前从未做过这样的事情。进行此设置和测试的最佳实践和最简单的途径是什么?
我不在乎数据是否是 24 小时前的,最重要的标准是每晚同时进行完整复制。
sql - SQL Server 代理作业:如何在不执行整个作业的情况下执行作业步骤
我有一个以前有两个步骤的 SQL Server 代理作业。今天,我必须整合第三步,很快我将需要整合第四步。
我想确保该步骤将正确执行,但我不想执行整个作业。
前两个步骤需要相当多的时间来执行,并且在白天它们占用了我的用户需要的大量 SQL 资源。
有没有办法可以执行一个作业步骤而不是整个作业流程?
在 SSMS 中,如果我右键单击该作业,则会有一个选项显示“在步骤中启动作业...”,除非当我尝试该选项时,它会弹出一个对话框,似乎暗示整个作业已开始。我可以做些什么来测试工作中的一个步骤?
提前致谢。
sql-server-2008 - SQL Server 代理未运行
我的服务器上的所有 SQL 作业都没有运行。我对此进行了调查并得到了消息:
如何让 SQL Server 代理开始在 SQL Server 2008 上运行?
sql-server - SQL Server 代理作业监控和通知
我想创建一个存储过程/作业来监视所有 SQL 服务器代理作业。当 SQL Server 代理的任何作业失败时,它会将作业名称通过电子邮件发送给管理员。
创建这样一个可以监控所有工作的工作的最佳方法是什么?