65.9K
CodeProject 正在变化。 阅读更多。
Home

从 C# 执行 SQL Server 2005 Integration Services 包

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (19投票s)

2006年5月25日

2分钟阅读

viewsIcon

353881

downloadIcon

2345

了解如何从 C# 代码加载和执行 SQL Server 2005 Integration Services 包。

引言

有很多方法可以执行 SQL Server 2005 Integration Services (SSIS) 包。 您可以使用命令行实用程序 DTExec.exe 或其窗口等效项 DTExecUI.exe。 可以在 SQL Server Business Intelligence Studio (Visual Studio) 或从 SQL Server 代理作业步骤中执行包。 也可以从 .NET 代码执行包!

示例 SSIS 包

为了演示,我创建了一个简单的包,它从 SQL Server AdventureWorks 数据库中提取一些数据,并将数据转储到一个平面文件中。 该包还包含一个变量。

Sample screenshot

Sample screenshot

在任何“真实世界”场景中,您的包通常由一个配置文件驱动。 SSIS 配置文件是一个扩展名为 .dtsConfig 的 XML 文件,其中包含可以应用于包的设置(无需实际更改或编辑包)。 在我的示例文件中,您可以使用您的 SQL Server 和平面文件连接信息编辑配置文件并运行该包。 您无需编辑实际的包文件。 这里有一个关于配置文件的很好的教程。 配置也可以存储在 SQL Server 表中,但这里我不会涉及。

让我们开始编码...

您需要添加对 Microsoft.SQLServer.ManagedDTS.dll 的引用。 我认为只有安装了 SQL Server 组件的机器才会安装此 DLL。

Sample screenshot

执行 SSIS 包的代码量出乎意料地小而简洁。 请注意,我为 Microsoft.SqlServer.Dts.Runtime 命名空间添加了一个 using 指令。

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;

namespace ExecuteSSIS
{
  class Program
  {
    static void Main(string[] args)
      {
        Application app = new Application();
        //
        // Load package from file system
        //
        Package package = app.LoadPackage("c:\\ExamplePackage.dtsx", null);
        package.ImportConfigurationFile("c:\\ExamplePackage.dtsConfig");
        Variables vars = package.Variables;
        vars["MyVariable"].Value = "value from c#";

        DTSExecResult result = package.Execute();

        Console.WriteLine("Package Execution results: {0}",result.ToString());

        //
        // Load package from SQL Server
        //
        Package package2 = app.LoadFromSqlServer(
            "ExamplePackage","server_name", "sa", "your_password", null);

        package2.ImportConfigurationFile("c:\\ExamplePackage.dtsConfig");
        Variables vars2 = package2.Variables;
        vars2["MyVariable"].Value = "value from c# again";

        DTSExecResult result2 = package2.Execute();

        Console.WriteLine("Package Execution results: {0}", 
             result2.ToString());
     }
  }
 }

首先,您创建一个 Application 对象,该对象提供对 DTS (Integration Services) 运行时的访问。 然后,您使用 Application 对象从文件系统或 SQL Server 加载一个包,我已经演示了这两种方式。 将包加载到 Package 对象后,您调用 ImportConfigurationFile() 方法将配置文件加载并应用于包。 Package 对象还具有一个 Variables 集合,该集合提供对包变量的访问。 最后,要实际执行一个包,请调用 Execute() 方法。

结论

本文旨在快速演示如何加载和执行包。 使用托管 DTS 命名空间,您可以做更多的事情。 有对象和其他命名空间允许您加载和检查包,甚至可以从 .NET 代码创建新的包。

历史

  • 2006 年 5 月 25 日:首次发布
© . All rights reserved.