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

数据库 SQL Server 数据库运维
这里将为大家讲述如何在SQL Server中,通过代码执行代理任务。通过执行代理任务,能极大的简化我们的操作,提高工作效率。

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

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

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

2. 通过存储过程

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

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

image

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();
}

image

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

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

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

image

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

USE msdb ;
GO

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

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

image

【编辑推荐】

  1. Oracle与SQL Server之间的数据迁移
  2. SQL Server置疑数据库解决方法
  3. SQL Server群集的几个关键技巧
责任编辑:彭凡 来源: cnblogs
相关推荐

2015-04-22 14:17:45

SQL SERVERMSSQL SERVE缓冲区

2010-10-20 17:00:51

SQL Server代

2010-10-21 16:04:13

SQL Server代

2010-11-10 11:21:50

SQL Server代

2011-03-03 10:45:51

2010-11-12 09:58:34

SQL存储过程

2011-07-26 17:45:12

SQL Server 定期自动备份

2010-09-27 15:24:11

SQL Server

2010-07-16 11:19:35

SQL Server数

2010-07-20 17:47:12

2011-09-02 14:05:25

SQL Server性能调优

2010-09-06 13:17:19

SQL Server语句

2010-11-12 11:48:15

2017-07-20 21:06:44

PythonExcelSQL

2010-07-16 17:03:35

SQL Server

2010-07-06 16:52:17

SQL Server创

2010-06-28 13:56:16

SQL Server代

2010-07-06 17:09:45

SQL Server索

2011-04-06 14:16:49

SQL Server自动备份

2010-07-16 10:19:31

点赞
收藏

51CTO技术栈公众号