问题标签 [sql-agent-job]
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-server - SQL作业无法执行包,但VS没有
当我直接从 Visual Studio 运行包时,它不会引发错误。当我通过 SQL Server 代理作业执行包时,它会引发错误:
来源:Fact_Invoice_Item PWBConsolidation [1] 描述:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x00040EDA 描述:“警告:空值被聚合或其他 SET 操作消除。”。结束错误错误:2012-02-14 07:17:49.01 代码:0xC0047038 来源:Fact_Invoice_Item SSIS.Pipeline
说明:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。组件“PWBConsolidation”(1) 上的 PrimeOutput 方法返回错误代码 0xC0202009。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。结束错误 DTExec:包执行返回 DTSER_FAILURE (1)。开始时间:上午 7:14:35 结束时间:上午 7:17:50 经过时间:195.094 秒。包执行失败。注意:该步骤已重试请求的次数 (3),但未成功。步骤失败。
我已经隔离了导致问题的部分。在 Ole Db Source 中,我使用查询来获取数据,当我删除以下行时,包将通过 Sql Server 代理作业成功执行:
编辑:
我刚刚检查过,看起来部分数据通过数据流,在某些时候它只是抛出错误。我手动设置了 Checksum=2 还是不行
知道为什么会这样吗?
非常感谢,
伊利亚
sql-server - 如何将参数传递给将执行存储过程的 SQL 作业
我有以下代码(仅需要的部分)
现在,我想将https://localhost
值传递给变量并传递给存储过程(由于某种原因,我无法在 SP 内部传递它)。
所以我尝试了
但它不工作。我还在网上搜索任何想法/语法等。但到目前为止还没有运气。
有任何想法吗?
sql-server-2005 - 使用 C# 运行 Sql Agent 作业的最佳方法是什么?
我正在使用 Sql server 2005 并为 UI 使用 C#/Asp.Net 4.0。我想从网页中的用户操作触发 sql 作业。我需要在运行时继续检查作业的状态。在这个问题上有几个旧线程可以获取作业的状态(如何在 C# 中监视 SQL Server 代理作业信息),但我需要我的程序应该能够运行、停止、启用、禁用作业
我的 UI 中需要以下功能。
检查 sql 作业的状态
运行指定作业
停止工作
禁用/启用作业
sql-server-2005 - SQL Server 代理作业运行存储过程非常缓慢
我有一个基本上重建数据透视表的存储过程。它在临时表中构建新数据,然后截断永久表并插入新数据,最后删除临时表。
当我在 Management Studio 中执行存储过程(或直接 T-SQL 代码)时,大约需要一分钟。虽然我知道这不是最有效的流程,但我可以接受。
当我尝试将此任务安排为每 20 分钟左右运行一次时,我的问题就出现了。当我设置一个 SQL Server 代理作业来执行存储过程时,它现在需要将近一个半小时......没错,慢了 90 倍!
我发现了这篇文章:SQL Server Agent Job Running Slow,这似乎是一个类似的问题,但无论我在存储过程的开头还是在 SQL Agent Job 中set nocount on
的命令之前调用它似乎都没有任何影响。exec
我的查询不使用任何游标,尽管我正在cross apply
对表值函数(也不使用任何游标)执行操作。
我显然错过了一些东西,但我什至不知道从哪里开始。我认为通过创建存储过程可以避免这些类型的问题。
作为参考,存储的过程如下所示:
sql-server - 如何根据先前 SQL 代理作业步骤的结果跳过作业步骤?
我正在尝试创建一个将根据数据库的在线状态运行的作业。比如第1步会检查数据库是否在线;如果数据库在线,它将运行其余步骤,否则,它将报告作业成功。
sql-server - 在 SQL Server 中设置作业启用/禁用的权限
已授予数据库用户SQLAgentOperatorRole
,但设置作业启用/禁用时仍有错误。错误信息是:
对象“sysjobs”、数据库“msdb”、模式“dbo”的 SELECT 权限被拒绝
我们通过 设置作业启用/禁用sp_update_job
。
评论:
执行以下语句时,会报错。
但是,当使用下面的语句时,它会执行成功。
usp_prod_SetJobStatus SP:
sql-server-2005 - 使用 SQL 计划每月执行 SSIS
我有一个 SQL 2005 SSIS 包,它每月向政府办公室报告,该报告应在每个月的最后一个星期四到期。我设置了 SQL Server 以在正确的日子运行包。安排报告时间不是问题。
现在 SSIS 包会创建一个月至今的报告。我使用了两个变量。一个 BeginDate,它使用表达式来确定该月的第一天并将其转换为类似“5/1/2012”的字符串。同样,还有 EndDate 会吐出今天的日期,例如“2012 年 5 月 3 日”。
有没有办法将 BeginDate 变量设置为上次运行报告后的第二天?有没有更好的方法来找出上个月最后一个星期四的日期?
tsql - 需要启动代理工作并等待完成并获得成功或失败
我一直在尝试使用 SQL Server 2005 查找示例代码,我需要启动一个代理作业并等到它完成过程然后获得成功或失败。
我知道我可以使用
开始工作,但我找不到任何示例代码来轮询msdb.dbo.sp_help_job
以了解它何时完成,然后找出它是成功还是失败。
sql - SQL 代理作业:确定它已经运行了多长时间
情景
某些 SQL 代理作业计划在一天中每隔几分钟运行一次。
有时它会错过下一个时间表,因为它仍在按上一个时间表运行。
每隔一段时间,一项工作可能会“挂起”。这不会产生失败(因为作业还没有停止)。发生这种情况时,可以手动停止作业并在下次运行时正常工作。它旨在从中断的地方重新开始。
什么是最有效的方法...?
我想要一种方法来确定名为“JobX”的 SQL 代理作业当前正在运行多长时间(以秒为单位)。如果它当前没有运行,我们可以返回零。
这样,如果作业的运行时间超过某个阈值,我可以停止作业。
我假设可以使用 xp_sqlagent_enum_jobs 和 sysjobhistory 的组合,但我很好奇是否有更好的解决方案......并且希望可以从你们其他人已经遇到并解决的障碍中受益。
c# - 在 MS SQL server R2 中等待超过 24 小时执行
我的问题(场景):
已经有一个内置的方法调用“WAITFOR”可以执行例如“存储过程”。这种等待只能完成不到 24 小时。
但问题是我的客户也是一名开发人员,他想找到一种方法来解决这个问题,并找到一种等待超过 24 小时以减少开发时间的方法。
已经有方法了。这可以每天查询一次必要的表,并将必要的电子邮件发送给客户等。
我知道,由于这个“WAITFOR”被限制为 24 小时,因此必须存在性能问题,因为这个“WAITFOR”执行次数会更高(例如 2000)。
我的问题:
- 有没有办法让存储过程超过 24 小时。可以说超过14天。
- 如果没有办法解决这个问题,我应该如何为这个问题辩护,我可以向我的客户提供哪些事实,例如性能问题,,
这就是我的想法,由于这种等待仅限于 24 小时,因此没有其他选择可以提供预期的功能来准确按时执行数据库任务。但这给服务器带来了很大的开销,以跟踪每个“WAITFOR”执行。如果这个超过2000左右,,这对于服务器来说是无法承受的。
可用的最佳选择是让“SQL 代理作业”每天运行一次(如您所愿)并获取与设置WAITFOR相关的值以准时执行某些作业。
请让我更好地理解等待超过 24 小时的问题。去寻找下一个选择。:((((
提前致谢。