2009-08-06 78 views
10

我有运行SSIS包的计划的SQL代理任务。我希望能够从.net运行SSIS包。有没有办法直接运行SSIS包或至少运行SQL代理任务,然后运行SSIS包。你可以从.net运行SSIS任务吗?

如果它帮助它是用C#编写

感谢.NET 3.5的Web应用程序!

回答

11

可用来运行SSIS包的选项 -

  • 运行包以编程方式使用SSIS对象模型。这在联机丛书here中有详细讨论。

为例:

using System; 
using Microsoft.SqlServer.Dts.Runtime; 

namespace RunFromClientAppCS 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string pkgLocation; 
      Package pkg; 
      Application app; 
      DTSExecResult pkgResults; 

      pkgLocation = "<package path>\CalculatedColumns.dtsx"; 
      app = new Application(); 
      pkg = app.LoadPackage(pkgLocation, null); 
      pkgResults = pkg.Execute(); 

      Console.WriteLine(pkgResults.ToString()); 
      Console.ReadKey(); 
     } 
    } 
} 
  • 开始DTEXEC.EXE过程。 DTEXEC是用于执行SSIS包的命令行实用程序。请参阅其命令行选项here

  • 使用SQL代理。您可以配置代理作业来运行您的程序包(如果程序包是静态的,或者在运行程序包之前使用SMO或使用SQL存储过程,请提前手动执行),然后使用SMO或sp_start_job以编程方式启动它。

  • 使用其他一些实用程序为您启动DTEXEC。

  • 创建将运行该程序包的自定义应用程序(使用OM,如方法#1中所述,或使用方法#2中的DTEXEC)。将其公开为Web服务或DCOM类,从您的程序调用此服务。

  • 发明自己的:)

参考:Running SSIS Package Programmatically

+0

进出口使用您的一个WinForm的解决方案。我在下面得到了红色的缩略图:'Application app;','app = new Application();'和'pkg = app.LoadPackage(pkgLocation,null)'; 'Error''Application'是'System.Windows.Forms.Application'和'Microsoft.SqlServer.Dts.Runtime.Application'\t'和'Error \t之间的模糊参考'\t'类型' System.Windows.Forms.Application'没有定义构造函数' - 我需要为Winform更改什么? – 2015-03-21 23:40:56

0

是的。查看Microsoft.SqlServer.Dts.Runtime命名空间。 Package类将提供运行它的方法。

相关问题