SQL Server通过代码执行代理任务
今天被人问到,假如我们需要在代码中执行SQL Server 的代理任务,那么有什么思路呢?
我马上想到,一般会有两种思路
1. 通过SMOSQL 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的方式更加易于实现。
- Oracle与SQL Server之间的数据迁移
- SQL Server置疑数据库解决方法
- SQL Server群集的几个关键技巧
http://www.htsjk.com/shujukugl/18005.html
www.htsjk.Com
true
http://www.htsjk.com/shujukugl/18005.html
NewsArticle
SQL Server通过代码执行代理任务 今天被人问到,假如我们需要在代码中执行SQL Server 的代理任务,那么有什么思路呢? 我马上想到,一般会有两种思路 1. 通过SMOSQL Server Management Object M...
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。