通过winforms运行SSIS包

时间:2011-06-22 10:28:36

标签: winforms ssis

我需要通过winforms运行SSIS包。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Deployment;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Net.Mime;
public string sPackage = String.Empty;
        public string sConfig = String.Empty;
        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog fDialog = new OpenFileDialog();
            fDialog.Title = "Open Package";
            fDialog.Filter = "SSIS Package (*.dts, *.dtsx)|*.dts;*.dtsx";
            fDialog.InitialDirectory = @"C:\";
            sPackage = fDialog.FileName.ToString();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog fDialog = new OpenFileDialog();
            fDialog.Title = "Open Package";
            fDialog.Filter = "SSIS Package (*.dts, *.dtsx)|*.dts;*.dtsx";
            fDialog.InitialDirectory = @"C:\";
            sConfig = fDialog.FileName.ToString();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Microsoft.SqlServer.Dts.Runtime.Wrapper.Application app = new Microsoft.SqlServer.Dts.Runtime.Wrapper.Application();
            Package package = app.LoadPackage(sPackage,false,null);
            package.ImportConfigurationFile(sConfig);
            DTSExecResult result = package.Execute();
            MessageBox.Show(result.ToString()); 
        }

但是这在LoadPackage上给我错误(sPackage,false,null)

无法将类型'Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSPackage90'隐式转换为'Microsoft.SqlServer.Dts.Runtime.Wrapper.Package'。存在显式转换(您是否错过了演员?)

1 个答案:

答案 0 :(得分:1)

我发现button3_click应该像这样处理

 private void button3_Click(object sender, EventArgs e)
        {
            MyEventListener eventListener = new MyEventListener();             
            Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
            Microsoft.SqlServer.Dts.Runtime.Package pkg = app.LoadPackage(sPackage, eventListener,false);
            Microsoft.SqlServer.Dts.Runtime.DTSExecResult pkgResults = pkg.Execute(null, null, eventListener, null, null);
            MessageBox.Show(pkgResults.ToString()); 
        }

        class MyEventListener : DefaultEvents
        {
            public override bool OnError(DtsObject source, int errorCode, string subComponent,
              string description, string helpFile, int helpContext, string idofInterfaceWithError)
            {
                // Add application-specific diagnostics here.
                MessageBox.Show("Error in " + "/t" + source + "/t" + subComponent + "/t" + description);
                return false;
            }
        }