how to execute multiple ssis packages from c#

浪尽此生 提交于 2020-01-07 05:25:08

问题


I have created 10 different packages and i want to execute them from c# coding. Can some one post some screen shots to achieve this. I have tried this

Application app = new Application();
        TraceService("loading system From File system");
        //Create package Container to hold the package.
        //And Load the Package Using the Application Object.
        Package package = app.LoadPackage(@"C:\User\Kiran\Documents\Visual Studio 2012\Projects\WindowsServiceTest\WindowsServiceTest\Package1.dtsx", null);

        TraceService("Execution Started");
        DTSExecResult result = package.Execute();
        // print the result
        TraceService(result.ToString());
        TraceService("Execution Completed");

Here i have to get the file name in run time not by hard coding


回答1:


Following code will execute all packages from given folder.

var pkgLocation = @"C:\User\Kiran\Documents\Visual Studio 2012\Projects\WindowsServiceTest\WindowsServiceTest\";
foreach (var file in Directory.EnumerateFiles(pkgLocation, "*.dtsx"))
using (var pkg = new Application().LoadPackage(file, null))
{
   var pkgResults = pkg.Execute();
  Console.WriteLine("Package File Name:{0}, Result:{1}",file.ToString(), pkgResults.ToString());
}



回答2:


The executing SSIS package from C# and VB is well documented in official site. This is my complete code in script task to execute multiple SSIS packages.

string packagesFolder = Dts.Variables["User::packagesFolder"].Value.ToString();
string rootFolder = Dts.Variables["User::rootFolder"].Value.ToString();

Package pkg;
Microsoft.SqlServer.Dts.Runtime.Application app;
DTSExecResult pkgResults;

foreach (var pkgLocation in Directory.EnumerateFiles(packagesFolder+"\\", "ValidateDataMigration-*.dtsx"))
{
    try
    {
        app = new Microsoft.SqlServer.Dts.Runtime.Application();
        pkg = app.LoadPackage(pkgLocation, null);
        pkgResults = pkg.Execute();

        File.AppendAllText(rootFolder + "\\DataValidationProgress.log", pkgLocation.ToString()+"=>"+ pkgResults.ToString()+ Environment.NewLine);
    }
    catch(Exception e)
    {
        File.AppendAllLines(rootFolder + "\\DataValidationErrors.log", new string[] { e.Message, e.StackTrace });
    }
}


来源:https://stackoverflow.com/questions/17358630/how-to-execute-multiple-ssis-packages-from-c-sharp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!