使用命令行参数执行ssis包

时间:2014-02-26 16:52:34

标签: batch-processing etl ssis bids

我想使用命令行参数执行SSIS包。 正如我们在执行C#项目时所做的那样。我想用这个论点。

CmdLineArguments:INTRADAY OPT OPTION_DAILY_INTRADAY_VOL12 / 02/2014

然后我想用这些不同的线索来做一些操作。

我得到了什么:我在网上搜索并得到了我们必须提供的内容如下

dtexec / file Package.dtsx / Set \ Package.Variables [User :: UniversFileAddress] .Properties [Value]; \“INTRADAY OPT OPTION_DAILY_INTRADAY_VOL12 / 02/2014 \”

对执行没有影响。我的意思是它不适合我。可能是我的观念错了。

而我想传递如下的参数

INTRADAY OPT OPTION_DAILY_INTRADAY_VOL12 / 02/2014

在脚本任务中使用这些参数。 我怎么能这样做..?

1 个答案:

答案 0 :(得分:0)

实际上有很多方法,但我发现以下方式适合我的应用程序。

  1. 创建控制台应用程序。
  2. 在该应用程序中调用该ssis包。
  3. 您可以在该控制台应用程序中设置可变值
  4. 这是代码:

    使用Microsoft.SqlServer.Dts.Runtime;

    命名空间ConsoleApplication1 {     课程     {         static void Main(string [] args)         {             string [] argsArray = new string [] {“”,“”,“”,“”};             if(args == null)                 Console.WriteLine(“args为null”);             其他             {                 if(args.Length> 4)                 {

                }
                else if (args.Length > 3)
                {
                    for (int i=0;i<args.Length;i++)
                    {
                        argsArray[i] = args[i];
                    }
    
                }
    
            }
    
            string pkglocation="h:\\My Documents\\Visual Studio 2008\\Projects\\Try_Project_To_Convert_Fro_Asia_Euro_US\\Try_Project_To_Convert_Fro_Asia_Euro_US\\Package.dtsx";
    
            Application app= new Application();
    
            Package Pkg=app.LoadPackage(pkglocation ,null);
            Pkg.Variables["User::fileName"].Value = argsArray[2] + argsArray[3].Substring(6, 4) + argsArray[3].Substring(3, 2) + argsArray[3].Substring(0, 2);
            string test = (string )Pkg.Variables["User::fileName"].Value;
            Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = Pkg.Execute();
    
    
        if (results == Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure)
        {
            string err = "";
            foreach (Microsoft.SqlServer.Dts.Runtime.DtsError local_DtsError in Pkg.Errors)
            {
                string error = local_DtsError.Description.ToString();
                err = err + error;
            }
        }
        if (results == Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success)
        {
            string message = "Package Executed Successfully....";
        }
    
        }
    }
    

    如果您有任何问题,请告诉我