예제 #1
0
        public List <IntegrationPackageResult> Execute(IList <ImportBankStmtParamItem> paramObjs)
        {
            Service1Client client = new Service1Client();
            var            result = new List <IntegrationPackageResult>();

            foreach (var paramObj in paramObjs)
            {
                if (paramObj.Enabled)
                {
                    var parameters = new SsisParameter[]
                    {
                        new SsisParameter()
                        {
                            ParameterName = "ChildPackageName", ParameterValue = paramObj.PackageName
                        },
                        new SsisParameter()
                        {
                            ParameterName = "SourceConnectionString", ParameterValue = paramObj.FilePath
                        },
                        new SsisParameter()
                        {
                            ParameterName  = "Account",
                            ParameterValue = paramObj.Account == null? "" : paramObj.Account.Name
                        }
                    };

                    IntegrationPackageResult childResult = client.ExecuteSsisPackage("BankStmtFile.dtsx", parameters);
                    result.Add(childResult);
                }
            }

            return(result);
        }
예제 #2
0
        public IntegrationPackageResult Execute(string packageName, SsisParameter[] parameters)
        {
            SqlConnection       ssisConnection = new SqlConnection(SqlConnectionString);
            IntegrationServices ssisServer     = new IntegrationServices(ssisConnection);

            // The reference to the package which you want to execute
            PackageInfo ssisPackage = ssisServer.Catalogs[CashDiscipline.Common.Constants.SsisCatalog].Folders[ssisFolderName].Projects[catalogName].Packages[packageName];

            // Add execution parameter to override the default asynchronized execution. If you leave this out the package is executed asynchronized
            Collection <PackageInfo.ExecutionValueParameterSet> executionParameter = new Collection <PackageInfo.ExecutionValueParameterSet>();

            executionParameter.Add(new PackageInfo.ExecutionValueParameterSet {
                ObjectType = 50, ParameterName = "SYNCHRONIZED", ParameterValue = 1
            });

            // Modify package parameter
            foreach (var svcParam in parameters)
            {
                ParameterInfo pInfo = null;
                var           pKey  = new ParameterInfo.Key(svcParam.ParameterName);
                if (!ssisPackage.Parameters.TryGetValue(pKey, out pInfo))
                {
                    throw new InvalidOperationException(string.Format("Parameter name {0} does not exist in package.", pKey.Name));
                }
                pInfo.Set(ParameterInfo.ParameterValueType.Literal, svcParam.ParameterValue);
            }

            ssisPackage.Alter();

            // Get the identifier of the execution to get the log
            long executionIdentifier = ssisPackage.Execute(false, null, executionParameter);

            // Loop through the log and add the messages to the listbox
            SsisMessages = new List <SsisMessage>();
            var execution = ssisServer.Catalogs["SSISDB"].Executions[executionIdentifier];

            foreach (OperationMessage message in ssisServer.Catalogs["SSISDB"].Executions[executionIdentifier].Messages)
            {
                SsisMessages.Add(new SsisMessage()
                {
                    MessageSourceType = message.MessageSourceType,
                    Message           = message.Message,
                    MessageType       = message.MessageType
                });
            }

            // Update result
            PackageResult = new IntegrationPackageResult();
            PackageResult.SsisMessages       = this.SsisMessages;
            PackageResult.ExecutionIdentifer = executionIdentifier;
            PackageResult.PackageName        = packageName;
            PackageResult.OperationStatus    = (SsisOperationStatus)execution.Status;

            return(PackageResult);
        }
예제 #3
0
        public IntegrationPackageResult Execute(string inputFilePath)
        {
            Service1Client client = new Service1Client();

            var parameters = new SsisParameter[] {
                new SsisParameter()
                {
                    ParameterName = "SourceConnectionString", ParameterValue = inputFilePath ?? ""
                }
            };

            IntegrationPackageResult result = client.ExecuteSsisPackage("WbcForexRate.dtsx", parameters);

            return(result);
        }