WEB开发网
开发学院数据库MSSQL Server SQL Server通过代码执行代理任务 阅读

SQL Server通过代码执行代理任务

 2009-05-15 10:28:23 来源:WEB开发网   
核心提示:今天被人问到,假如我们需要在代码中执行SQL Server 的代理任务,SQL Server通过代码执行代理任务,那么有什么思路呢?我马上想到,一般会有两种思路1. 通过SMO(SQL Server Management Object Model)2. 通过存储过程下面首先介绍的是通过SMO的手段1. 首先要添加两个程

今天被人问到,假如我们需要在代码中执行SQL Server 的代理任务,那么有什么思路呢?

我马上想到,一般会有两种思路

1. 通过SMO(SQL Server Management Object Model)

2. 通过存储过程

下面首先介绍的是通过SMO的手段

1. 首先要添加两个程序集的引用

SQL Server通过代码执行代理任务

2. 然后编写代码

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Smo.Agent; 

 

/// 


/// 列出某个服务器上面所有的代理作业
/// 作者:陈希章
/// 
/// 
/// 
private void btList_Click(object sender, EventArgs e)
{
Server svr = new Server("Thinker");
foreach (Job item in svr.JobServer.Jobs)
{
lstJobs.Items.Add(item);
}
}
/// 
/// 双击运行某个作业
/// 作者:陈希章
/// 
/// 
/// 
private void lstJobs_MouseDoubleClick(object sender, MouseEventArgs e)
{
Job item = lstJobs.SelectedItem as Job;
item.Start();
}

SQL Server通过代码执行代理任务

图片看不清楚?请点击这里查看原图(大图)。

这是相当方便的。但有一个问题就是SMO这种操作必须在服务器由管理员身份执行。

那么,有没有办法在T-SQL中通过存储过程的方式调用呢?

1. 首先要知道的是,Job的信息是放在MSDB的,所以需要在MSDB里面想办法。而且也应该让调用方具有MSDB的一些权限

SQL Server通过代码执行代理任务

图片看不清楚?请点击这里查看原图(大图)。

2. 我们很快就定位到了这个存储过程sp_start_job。下面是一个范例

USE msdb ;
GO 

EXEC dbo.sp_start_job N'THINKER-demo-demo_products_merge-THINKER-1' ;
GO

相比较而言,用T-SQL的方式更加易于实现。

SQL Server通过代码执行代理任务

图片看不清楚?请点击这里查看原图(大图)。

Tags:SQL Server 通过

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接