SQL 2008 SQL Server 代理作业,如何填充通知电子邮件

sqlserver

1个回答

写回答

fan.Dn

2025-07-09 03:40

+ 关注

Database
Database

使用SQL Server代理作业,可以在特定时间或事件触发时自动运行SQL Server作业。在SQL Server代理作业中,我们可以配置通知电子邮件来获取作业运行的状态和结果。本文将介绍如何填充通知电子邮件的步骤,并提供一个使用SQL Server代理作业的案例代码。

配置SQL Server代理作业的通知电子邮件

在SQL Server中配置代理作业的通知电子邮件,需要以下步骤:

1. 打开SQL Server Management Studio(SSMS)并连接到要配置的SQL Server实例。

2. 在左侧对象资源管理器中展开“SQL Server代理”,然后展开“作业”文件夹。

3. 右键单击要配置通知的作业,并选择“属性”。

4. 在作业属性对话框中,选择“步骤”选项卡。

5. 在步骤列表中选择要配置通知的步骤,并点击“编辑”。

6. 在步骤属性对话框中,选择“通知”选项卡。

7. 在通知选项卡中,勾选“电子邮件”并填写以下信息:

- 电子邮件地址:填写要接收通知的电子邮件地址。

- 电子邮件类型:选择通知的类型,可以是成功、失败或完成。

- 选中“附加输出到电子邮件”复选框,以在电子邮件中包含作业输出信息。

8. 点击“确定”保存配置。

通过以上步骤,我们可以配置SQL Server代理作业的通知电子邮件,以便在作业运行状态或结果发生变化时接收通知。

案例代码

假设我们有一个SQL Server代理作业,用于每天备份数据库。我们可以配置通知电子邮件,以便在备份成功或失败时接收通知。

以下是一个示例的SQL Server代理作业代码:

USE [msdb]

GO

BEGIN TRANSACTION

DECLARE @ReturnCode INT

SELECT @ReturnCode = 0

IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)

BEGIN

EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)

EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'DatabaseBackupJob',

@enabled=1,

@notify_level_eventlog=0,

@notify_level_emAIl=2,

@notify_level_netsend=0,

@notify_level_page=0,

@delete_level=0,

@description=N'Backup Databases on a dAIly basis',

@category_name=N'[Uncategorized (Local)]',

@owner_login_name=N'sa', @job_id = @jobId OUTPUT

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Backup Databases',

@step_id=1,

@cmdexec_success_code=0,

@on_success_action=1,

@on_success_step_id=0,

@on_fAIl_action=2,

@on_fAIl_step_id=0,

@retry_attempts=0,

@retry_interval=0,

@os_run_priority=0, @subsystem=N'TSQL',

@command=N'

BACKUP Database [AdventureWorks] TO DISK = ''C:\Backup\AdventureWorks.bak'' WITH INIT

BACKUP Database [Northwind] TO DISK = ''C:\Backup\Northwind.bak'' WITH INIT

',

@Database_name=N'master',

@flags=0

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

COMMIT TRANSACTION

GOTO EndSave

QuitWithRollback:

IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION

EndSave:

GO

以上代码创建了一个名为"DatabaseBackupJob"的SQL Server代理作业,该作业备份了AdventureWorks和Northwind数据库。在该作业的第一个步骤中,我们可以配置通知电子邮件以接收备份成功或失败的通知。

本文介绍了如何使用SQL Server代理作业填充通知电子邮件的步骤,并提供了一个使用SQL Server代理作业的案例代码。通过配置通知电子邮件,我们可以在SQL Server代理作业运行状态或结果发生变化时及时接收通知,以便及时采取相应的措施。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号