`
逆风的香1314
  • 浏览: 1416001 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据表中记录的变化情况自动维护作业

阅读更多

 

/**//*--作业处理实例

    根据 sendTab 的 SendTime 定制作业
    并且在该作业完成时,可以自动删除作业
--邹建 2004.04(引用请保留此信息)--
*/


--示例

--测试表
CREATE TABLE dbo.sendTab(
    ID 
int IDENTITY(1,1),
    Name 
nvarchar(10),
    SendTime 
datetime,
    AcceptUnit 
varchar(10),
    SendUnit 
varchar(10),
    Content 
nvarchar(4000)
)

CREATE TABLE dbo.accepteTab(
    ID 
int IDENTITY(1,1),
    Name 
nvarchar(10),
    SendUnit 
varchar(10),
    AcceptUnit 
varchar(10),
    Content 
nvarchar(4000)
)
GO

--创建处理的存储过程
CREATE PROC dbo.p_JobSet
    
@id int,            --要处理的sendTab的id
    @is_delete bit=0    --是否仅删除,为0则否,为1则是
AS
DECLARE
    
@dbname sysname,
    
@jobname sysname,
    
@date int,
    
@time int

-- job 名称及运行时间
SELECT 
    
@jobname = N'定时发送作业_' + CAST(@id as nvarchar),
    
@date = CONVERT(varchar, SendTime, 112),
    
@time = REPLACE(CONVERT(varchar, SendTime, 108), ':''')
FROM dbo.sendTab
WHERE id = @id

-- 如果 job 已经存在, 则删除
IF EXISTS(
        
SELECT 1 FROM msdb.dbo.sysjobs
        
WHERE name = @jobname)
    
EXEC msdb.dbo.sp_delete_job
            
@job_name = @jobname 

IF @is_delete = 1
    
RETURN

-- 创建job
EXEC msdb.dbo.sp_add_job
    
@job_name = @jobname,
    
@delete_level = 1

-- 创建 job 步骤
DECLARE
    
@sql varchar(800)
SELECT
    
@sql = N' -- job 要实现的操作
INSERT dbo.accepteTab(
    name,SendUnit,AcceptUnit,Content)
SELECT
    name,AcceptUnit,SendUnit,Content
FROM dbo.sendTab
WHERE id = 
' 
        
+ CAST(@id as varchar),
    
@dbname = DB_NAME()

EXEC msdb.dbo.sp_add_jobstep
    
@job_name = @jobname,
    
@step_name = N'发送处理步骤',
    
@subsystem = 'TSQL',
    
@database_name = @dbname,
    
@command = @sql,
    
@retry_attempts = 5,         --重试次数
    @retry_interval = 5          --重试间隔

-- 创建调度
EXEC msdb.dbo.sp_add_jobschedule
    
@job_name = @jobname
    
@name = N'时间安排',
    
@enabled = 1
    
@freq_type = 1
    
@active_start_date = @date,
    
@active_start_time = @time

-- 添加目标服务器
EXEC msdb.dbo.sp_add_jobserver 
    
@job_name = @jobname ,
    
@server_name = N'(local)' 
go

-- 创建处理的触发器(新增/修改)
CREATE TRIGGER tr_insert_update 
    
ON dbo.sendTab
FOR INSERT,UPDATE
AS
DECLARE 
    
@id int
DECLARE tb CURSOR LOCAL
FOR
SELECT
    id
FROM inserted
OPEN tb
FETCH tb INTO @id
while @@fetch_status=0
BEGIN
    
EXEC dbo.p_JobSet
        
@id = @id
    
    
FETCH tb INTO @id
END
CLOSE tb
DEALLOCATE tb
go

-- 创建处理的触发器(删除)
CREATE TRIGGER tr_delete
    
ON dbo.sendTab
FOR DELETE
AS
DECLARE
    
@id int
DECLARE tb CURSOR LOCAL
FOR
SELECT
    id
FROM deleted
OPEN tb
FETCH tb INTO @id
WHILE @@FETCH_STATUS=0
BEGIN
    
EXEC dbo.p_JobSet
        
@id = @id,
        
@is_delete = 1

    
FETCH tb INTO @id
END
CLOSE tb
DEALLOCATE tb
go

-- 测试(每个步骤做完后, 可以看看 job 是否建立, 在时间到之后, 可以看看 Job 是否被自动删除, 并且 dbo.accepteTab 是否有记录)

-- a. 插入数据
INSERT dbo.sendTab
SELECT N'文书1'DATEADD(s, 1GETDATE()), 'UnitA''UnitB', N'txt' UNION ALL
SELECT N'文书2'DATEADD(d, 1GETDATE()), 'UnitA''UnitB', N'txt' UNION ALL
SELECT N'文书3'DATEADD(m, 1GETDATE()), 'UnitA''UnitB', N'txt'

-- b. 修改
UPDATE dbo.sendTab SET
    name 
= N'档案1',
    SendTime 
= DATEADD(s, 5GETDATE())
WHERE id = 2

-- c. 删除
DELETE dbo.sendtab
WHERE id = 3
GO

-- 删除测试
DROP TABLE dbo.sendTab, dbo.accepteTab
DROP PROC dbo.p_JobSet
分享到:
评论

相关推荐

    海洋石油平台仪表自动化设备故障与维护.pdf

    海洋石油平台的自动化设备是保证海上石油开采作业安全、高效进行的关键技术。本文将详细分析海洋石油平台中自动化仪表设备常见的故障类型、成因,并探讨相应的维护措施,以便为海洋石油工业提供参考和指导。 首先,...

    自动化仪表与系统的安全防护研究.pdf

    例如,在冶金厂企业生产中,对一次性加水或相关酸碱性作业中的液体量进行严格控制,使用自动化仪器仪表进行准确计量,极大提升了工业生产效率,并有效保证了产品合格率。 总之,自动化仪表与系统的安全防护研究不...

    SQL SERVER定时作业的设置方法

    SQL Server定时作业是数据库管理系统中一个非常重要的功能,它允许管理员安排特定的数据库操作在预设的时间自动执行。这通常包括但不限于运行SQL脚本、存储过程或其他管理任务。以下将详细解释如何设置SQL Server...

    电力系统中热工仪表自动化安装及运行微探 (1).pdf

    - 电压法:通过检测电压波变化来诊断设备故障,常使用万能表。 - 敲击法:用于处理内部接触不良或漏焊问题,如消除仪表内部的水雾。 - 信号法:分析信号传输情况和波动,评估信号输入、输出效果。 - 电阻法:通过...

    php+mysql 在线作业管理系统

    作业表关联提交表,记录学生的作业提交情况。 三、PHP技术应用 1. PHP连接数据库:使用PDO(PHP Data Objects)扩展,提供安全的数据库连接,支持预处理语句,防止SQL注入。 2. 表单处理:通过POST方法接收用户...

    仪表自动化工程的质量控制.pdf

    1. 机械设备的影响:在自动化仪表的安装和维护过程中,需要使用到多种作业设备,包括但不限于提升设备、焊接设备、检测设备等。这些设备的质量和性能直接影响到仪表自动化工程的安装精度和可靠性。因此,必须对这些...

    最重要作业时间分析表格式.doc

    《最重要作业时间分析表》是企业管理中用于优化生产流程、提升效率的重要工具,尤其是在制造业和服务业中广泛应用。这个表格主要用于详细记录各项作业的时间消耗,从而找出瓶颈和改进点,提高工作效率,降低成本。...

    怎么在sap sm37 中 查询作业变式

    例如,在数据备份作业中,如果选择了错误的变式,则可能导致数据备份不完整或者备份到错误的位置。因此,在日常管理和维护工作中,正确地配置和使用变式是非常重要的。 ### 四、常见问题与解决方法 在实际使用过程...

    电子功用-变电站设备污秽巡检、判定及清洗的全自动作业方法

    "电子功用-变电站设备污秽巡检、判定及清洗的全自动作业方法"是一个专门针对这一问题的解决方案,旨在通过自动化技术提高巡检效率,确保设备清洁度,降低维护成本,保障电力系统的安全运行。 首先,我们要理解污秽...

    工程量计算表_excel自动计算表_工程自动计算excel模板_市政管道及市政燃气土方工程量全套计算表(自动计算).zip

    在这个压缩包中的"市政管道及市政燃气土方工程量全套计算表(自动计算)",可能包含以下几个部分: 1. **数据输入区域**:用户在此输入工程的基本信息,如管道直径、长度、埋深、土壤类型、管道材料等,以及地形...

    DM7作业系统使用手册

    - **查看、清除作业历史信息**: 查看作业的历史执行情况,并可选择清除过期记录。 - **修改作业**: 更改已存在的作业配置。 - **删除作业**: 删除不再需要的作业记录。 #### 五、警报 **5.1 通过系统过程实现** - *...

    SQL SERVER定时自动计算小时平均值.docx

    一旦作业创建并启用,SQL Server代理将按照设定的计划自动执行查询,计算并更新`HOUR_AVG`表中的数据。 请注意,这个方案可以根据实际需求进行调整。例如,如果你想计算其他时间段的平均值,只需更改`DATEDIFF`中的...

    设备维护与检修作业标准.doc

    文档“设备维护与检修作业标准.doc”主要涵盖了连铸设备的技术参数、主要设备的技术性能以及相关的维护和...在进行检修时,需要遵循操作规程,确保不影响生产流程,并做好设备状态记录,以便追踪和分析设备的性能变化。

    自动化仪表设备安装技术交底.doc

    大部分仪表设备将被安装在户外环境中,这意味着它们将面临诸如天气变化等各种外部因素的影响。为了确保设备能够在极端环境下正常运行,所有需要伴热、保温处理的仪表均采用了低压蒸汽作为热源。 此外,考虑到部分...

    大采高作业面支架自动化控制分析.rar

    未来的发展趋势将着重于提高系统的智能化程度,如引入人工智能算法进行预测性维护,以及探索5G等新型通信技术在矿井中的应用,以进一步提升作业效率和安全性。 总结,大采高作业面支架自动化控制是煤炭开采技术的...

    机械式停车设备理体车库涂装检验作业指导书.pdf

    3. 涂装材料选择:涂装材料通常包括底漆、中间漆和面漆,需要根据停车设备所处环境的腐蚀等级、温度变化、紫外线照射情况以及装饰性要求等因素选择合适的涂料。 4. 涂装工艺:涂装作业需要按照喷涂、滚涂、刷涂等...

    批处理作业批处理作业

    4. **错误处理和日志记录**:在批处理作业中,错误处理是至关重要的。脚本应当包含适当的错误检查和恢复机制,确保即使在某些步骤失败时,整个作业仍能继续或适当地终止。同时,详细的日志记录可以帮助追踪和调试...

    电子政务-修井作业管杆输送机电液控装置.zip

    在修井作业中,电液控装置能够根据实时数据调整工作状态,比如根据井下压力变化调整输送速度,或者在检测到异常时自动停止作业,从而保障作业安全。 电子政务在这个领域的应用可能体现在以下几个方面: 1. 数据...

    activiti5.20与6.0版本数据库变化

    Activiti是一个基于Java开发的轻量级、可嵌入的工作流和业务流程管理系统。它是遵循Apache许可的开源项目,被广泛应用于业务流程自动化。...因此,在进行Activiti 6.0部署和维护的过程中,数据库方面的变化不容忽视。

    sql自动备份设置教程.rar

    差异备份只备份自上次全备份以来发生变化的数据,而日志备份则记录事务日志,用于恢复到特定时间点。 5. 备份验证与恢复测试 备份不仅要有,还要验证其有效性。定期进行恢复测试,确认备份文件可成功恢复数据库,...

Global site tag (gtag.js) - Google Analytics