相信大多数搞BI的人都知道ETL,如果你不知道或者没有使用过ETL,很遗憾,本文中涉及到的案例,你很可能看不明白。

首先看一下ASP.NET调用ETL流程图:

ETL流程图

如上流程图中,前三步对于用过ETL的人来说很快就能完成,关键是“获取执行代码”,怎么样获取呢,下面笔者介绍一种比较简单的方法。

在你的SSIS方案中找到“執行 SQL Server Agent 作業工作”工具,然后右键编辑,新增一个连接,填写你部署ETL的SQL Server Agent基本信息,再找到JOB名称,勾选后出现如下图示。

SSA新建JOB

点击“检视T-SQL(V)”按钮便获取到执行ETL的代码,格式如:

EXEC msdb.dbo.sp_start_job @job_id=N'XXX'

这其实就是一个执行存储过程的代码,也就是说SSA中的JOB本质上是一个存储过程,而执行这个JOB,上面代码是通用的,只是更换一个job_id就可以了。在众多的JOB中,如何获取job_id呢?咱总不能用工具获取代码吧,那样效率太低下了。这里有一个方法。

登陆你部署ETL的数据库,然后找到并展开“系统数据库”再到msdb后展开,再找到并展开“资料表”,找到“系统资料表”,最后找到“dbo.sysjobs”,job_id便深藏于此表中,即查询job_id的资料表全称为:msdb.dbo.sysjobs,再以下SQL语句查询job_id:

select * from msdb.dbo.sysjobs a where a.name= '你的JOB名称'

查询结果中的job_id栏中的值便是执行代码中的job_id。

(2012.9.7更新)执行ETL还有另一通用代码:

EXEC msdb.dbo.sp_start_job @job_name='你的JOB名称'

最后将整个执行代码用ADO.NET调用就可以了,跟调用并执行存儲过程一样。

空非易文章均为原创,转载请以链接形式注明本文地址

本文地址:http://pengzhiyong.com/archives/aspnet-excute-etl.html

作者:空非易 | 标签: , , | 浏览:1453