如何从.NET以编程方式调用SSIS?

时间:2008-10-06 18:13:53

标签: c# .net sql-server ssis

我有一个应用程序,每当文件上传到目录时,我都必须调用SSIS来解析XML文件。

我可以直接从.NET Windows服务调用SSIS吗?

5 个答案:

答案 0 :(得分:9)

Running SSIS package programmatically

我更喜欢第二种方法:

启动DTEXEC.EXE进程。 DTEXEC是用于执行SSIS包的命令行实用程序。请在此处查看其命令行选项:http://msdn2.microsoft.com/en-us/library/ms162810.aspx

优点:运行包退出过程获得可靠性。可以从任何编程语言(包括.NET 1.1 :)使用。通过设置变量值轻松传递参数。

缺点:也仅限本地。更难获得有关包进度的信息(但SSIS日志记录可以为您提供最多功能)。启动新进程的一些开销(与大包的执行时间相比可能很小)。

ASP.NET特定:Win32 CreateProcess函数忽略线程模拟。因此,如果您希望DTEXEC在与ASP.NET进程帐户不同的帐户下运行,您应该让用户输入名称/密码并将其传递给Process.Start,或者使用以下KB中描述的方法在模拟帐户下运行子进程{ {3}}

答案 1 :(得分:2)

您可以通过编程方式运行SSIS包,如下所示:

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

namespace ConsoleApplicationSSIS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Loading SSIS Service...");
            //Application object allows load your SSIS package
            Application app = new Application();
            //In order to retrieve the status (success or failure) after running SSIS Package
            DTSExecResult result ;
            //Specify the location of SSIS package - dtsx file
            string SSISPackagePath = @"C:\Microsofts\BI\SSIS\ConsoleApplicationSSIS\IntegrationServiceScriptTask\Package.dtsx";
            //Load your package
            Package pckg = (Package)app.LoadPackage(SSISPackagePath,true,null);
            //Execute the package and retrieve result
            result  = pckg.Execute();
            //Print the status success or failure of your package
            Console.WriteLine("{0}", result.ToString());
            Console.ReadLine();
        }
    }
} 

如果您需要完整样本,请访问:http://hassanboutougha.wordpress.com/2012/10/13/run-your-ssis-package-progammatically/

我解释了如何创建一个简单的SSIS包以及如何从控制台应用程序以编程方式调用它。不要忘记让这个程序集:C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ SDK \ Assemblies \ Microsoft.SQLServer.DTSRuntimeWrap.dll引用运行时ssis命名空间

您也可以通过编程方式传递变量并更改ssis包的源和目标连接

答案 2 :(得分:0)

您可以通过编程方式调用SSIS,执行包并使用DTS运行时从.NET代码更改配置。 Here is complete code of how you can do it

答案 3 :(得分:0)

您可以从Windows服务中调用SSIS包。但是Microsoft.SqlServer.Dts应该安装到要运行Windows服务的系统中。如果已在该计算机上安装了DTS,请直接调用SSIS包。如果未安装,则应执行以下操作。

  1. 创建SSIS包
  2. 创建运行SSIS包的作业
  3. 在您的ADO.NET [驻留在Windows服务代码中],调用存储 运行作业[配置为运行SSIS包]的过程。 以下是应该从.NET代码调用的示例。
  4.   

    EXEC msdb.dbo.sp_start_job N'YourJobName'

    希望这有帮助!

答案 4 :(得分:0)

更新这个很老的问题:

在SQL Server 2012上,您只需创建将调用create_executionset_execution_parameter

的存储过程即可。

可在此处找到分步指南:https://blogs.msdn.microsoft.com/biblog/2013/05/07/step-by-step-of-executing-ssis-2012-package-through-stored-procedure/

enter image description here