SQL Server通过代码执行代理任务
2009-05-15 10:28:23 来源:WEB开发网今天被人问到,假如我们需要在代码中执行SQL Server 的代理任务,那么有什么思路呢?
我马上想到,一般会有两种思路
1. 通过SMO(SQL Server Management Object Model)
2. 通过存储过程
下面首先介绍的是通过SMO的手段
1. 首先要添加两个程序集的引用
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();
}
图片看不清楚?请点击这里查看原图(大图)。
这是相当方便的。但有一个问题就是SMO这种操作必须在服务器由管理员身份执行。
那么,有没有办法在T-SQL中通过存储过程的方式调用呢?
1. 首先要知道的是,Job的信息是放在MSDB的,所以需要在MSDB里面想办法。而且也应该让调用方具有MSDB的一些权限
图片看不清楚?请点击这里查看原图(大图)。
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 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››通过远程管理更改ESXi主机root用户密码
- ››sqlserver安装和简单的使用
赞助商链接