欢迎光临丹阳九九信息网
详情描述
在SQL SERVER 中用SSMS实现每日自动调用存储过程的操作步骤

方法一:使用 SQL Server 代理(推荐)

这是最常用的自动化方法,适合生产环境。

步骤 1:确保 SQL Server 代理服务已启动 打开 SQL Server 配置管理器 找到 SQL Server 代理 服务 右键选择 启动(如果未运行) 建议将启动类型设为 自动 步骤 2:创建存储过程(如果尚未存在)
CREATE PROCEDURE dbo.DailyDataProcess
AS
BEGIN
    -- 你的业务逻辑代码
    PRINT '每日处理开始...'
    -- 例如:更新数据、清理日志等
END
步骤 3:创建作业 在 SSMS 中连接到目标 SQL Server 实例 展开 SQL Server 代理 → 右键 作业新建作业 常规 页:
  • 作业名称:Daily_Data_Process
  • 所有者:选择有权限的用户
  • 类别:[未分类(本地)]
  • 描述:每日自动执行数据处理
步骤 4:创建作业步骤 转到 步骤 页 → 点击 新建 步骤名称:Execute_Stored_Procedure 类型:Transact-SQL 脚本(T-SQL) 数据库:选择你的数据库 命令:
EXEC dbo.DailyDataProcess;
GO
步骤 5:设置计划 转到 计划 页 → 点击 新建 名称:Daily_2AM_Schedule 计划类型:重复执行 频率:
  • 执行:每天
  • 执行间隔:1
每天频率:
  • 执行一次,时间:02:00:00(示例:凌晨2点)
确定保存 步骤 6:测试作业 右键作业 → 作业开始步骤 查看执行结果:
  • 右键作业 → 查看历史记录
  • 展开 SQL Server 代理错误日志

方法二:使用 Windows 任务计划程序 + PowerShell

适合无法使用 SQL Server 代理的情况(如 Express 版本)。

步骤 1:创建 PowerShell 脚本
# ExecuteDailyProc.ps1
$SqlInstance = "localhost"
$Database = "YourDatabase"
$StoredProc = "dbo.DailyDataProcess"

$Query = "EXEC $StoredProc"

Invoke-Sqlcmd -ServerInstance $SqlInstance -Database $Database -Query $Query -ErrorAction Stop
Write-Host "存储过程执行完成 - $(Get-Date)"
步骤 2:创建 Windows 计划任务 打开 任务计划程序 创建基本任务:
  • 名称:SQL_Daily_Job
  • 触发器:每天,2:00 AM
  • 操作:启动程序
    • 程序:powershell.exe
    • 参数:-File "C:\Scripts\ExecuteDailyProc.ps1"
设置运行账户(使用有数据库权限的账户)

方法三:使用 T-SQL 创建计划(仅限完整版)

-- 创建计划
USE msdb;
GO

EXEC dbo.sp_add_job
    @job_name = N'Daily_Data_Process';

EXEC sp_add_jobstep
    @job_name = N'Daily_Data_Process',
    @step_name = N'Execute SP',
    @subsystem = N'TSQL',
    @database_name = N'YourDatabase',
    @command = N'EXEC dbo.DailyDataProcess;';

EXEC sp_add_schedule
    @schedule_name = N'Daily_2AM',
    @freq_type = 4, -- 每天
    @freq_interval = 1,
    @active_start_time = 020000; -- 2:00 AM

EXEC sp_attach_schedule
    @job_name = N'Daily_Data_Process',
    @schedule_name = N'Daily_2AM';

EXEC sp_add_jobserver
    @job_name = N'Daily_Data_Process';

监控和维护建议

监控作业状态

-- 查看作业执行历史
USE msdb;
SELECT * FROM dbo.sysjobhistory WHERE job_name = 'Daily_Data_Process';

添加错误处理

ALTER PROCEDURE dbo.DailyDataProcess
AS
BEGIN
    BEGIN TRY
        -- 业务逻辑
        PRINT '开始执行...'

    END TRY
    BEGIN CATCH
        DECLARE @ErrorMsg NVARCHAR(4000) = ERROR_MESSAGE();
        PRINT '错误: ' + @ErrorMsg;
        -- 可以记录到日志表
    END CATCH
END

设置通知(可选):

  • 在作业属性 → 通知
  • 配置作业失败时发送电子邮件

常见问题解决

作业失败:检查 SQL Server 代理服务是否运行 权限不足:确保作业所有者有执行存储过程的权限 时间不对:确认服务器时区设置 查看详细日志
  • 在 SSMS 中:SQL Server 代理 → 错误日志

选择最适合你环境的方法。对于生产环境,方法一(SQL Server 代理) 是最稳定和推荐的方式。

相关推荐
养老金年度调整机制是如何运作的,未来增长趋势可能怎样?
养老金年度调整机制是如何运作的,未来增长趋势可能怎样?
签订劳动合同时,注意哪些条款能更好地预防未来可能出现的工资拖欠风险?
签订劳动合同时,注意哪些条款能更好地预防未来可能出现的工资拖欠风险?
2026年,办理不动产权证加名,从申请到拿到新证大概需要多长时间?
2026年,办理不动产权证加名,从申请到拿到新证大概需要多长时间?
面对市场变化,普通家庭该如何构建一份简单明了的财务健康自查表?
面对市场变化,普通家庭该如何构建一份简单明了的财务健康自查表?
冬韵遍寰球:南北半球冬日景观差异背后的地理知识全解析
冬韵遍寰球:南北半球冬日景观差异背后的地理知识全解析
社保卡在2026年能否集成更多的个人证件信息,实现“多证合一”?
社保卡在2026年能否集成更多的个人证件信息,实现“多证合一”?
第三代社保卡新增非接触式芯片,原来那些插卡读卡槽的设备还能不能正常读新卡?
第三代社保卡新增非接触式芯片,原来那些插卡读卡槽的设备还能不能正常读新卡?
民法典第三十三条说的意定监护,具体适合哪些人群提前去签一份比较合适?
民法典第三十三条说的意定监护,具体适合哪些人群提前去签一份比较合适?
炖、焖、干煸、爆炒四种做法里,哪种更容易因为水分少而误判四季豆成熟度?
炖、焖、干煸、爆炒四种做法里,哪种更容易因为水分少而误判四季豆成熟度?
职工医保个人账户的“家庭共济”到底是什么意思,和亲情账户是一回事吗?
职工医保个人账户的“家庭共济”到底是什么意思,和亲情账户是一回事吗?
2026年申请创业补贴,对于企业或项目的注册年限和规模有何具体要求?
2026年申请创业补贴,对于企业或项目的注册年限和规模有何具体要求?
换牙
换牙"期"能不能吃硬一点的东西,老一辈说的"磨牙"有道理吗?
2026年行业新规下,应用开发商在提供账号解绑功能方面被要求承担哪些责任?
2026年行业新规下,应用开发商在提供账号解绑功能方面被要求承担哪些责任?
切菜不小心把手指划了一道口子沾了铁锈味,普通厨房小伤口需要纠结破伤风针吗?
切菜不小心把手指划了一道口子沾了铁锈味,普通厨房小伤口需要纠结破伤风针吗?
纸吸管和PLA可降解吸管到底差在哪,为什么有的店又换回塑料了?
纸吸管和PLA可降解吸管到底差在哪,为什么有的店又换回塑料了?
除了牙齿,人体还有哪些部位的骨骼硬度也非常高,它们如何分工?
除了牙齿,人体还有哪些部位的骨骼硬度也非常高,它们如何分工?
商家把满减门槛设成 199/299 这类数,为什么你总觉得只差一点就很值?
商家把满减门槛设成 199/299 这类数,为什么你总觉得只差一点就很值?
因原单位未及时减员导致新单位无法参保,应该联系哪个部门解决?
因原单位未及时减员导致新单位无法参保,应该联系哪个部门解决?