コード例 #1
0
        private static void _processPackage(AstPackageBaseNode package)
        {
            packageName = new AstVariableNode(package)
            {
                Name = "PackageName", IsSystemVariable = true, TypeCode = TypeCode.String
            };
            packageGuid = new AstVariableNode(package)
            {
                Name = "PackageID", IsSystemVariable = true, TypeCode = TypeCode.String
            };
            parentPackageGuid = new AstVariableNode(package)
            {
                Name = "_parentPackageGuid", TypeCode = TypeCode.String, Value = String.Empty, InheritFromPackageParentConfigurationString = "System::PackageID"
            };
            source = new AstVariableNode(package)
            {
                Name = "SourceName", TypeCode = TypeCode.String, IsSystemVariable = true
            };
            sourceID = new AstVariableNode(package)
            {
                Name = "SourceID", TypeCode = TypeCode.String, IsSystemVariable = true
            };
            parentSourceID = new AstVariableNode(package)
            {
                Name = "ParentContainerGUID", TypeCode = TypeCode.String, IsSystemVariable = true
            };
            machineName = new AstVariableNode(package)
            {
                Name = "MachineName", TypeCode = TypeCode.String, IsSystemVariable = true
            };
            userName = new AstVariableNode(package)
            {
                Name = "UserName", TypeCode = TypeCode.String, IsSystemVariable = true
            };
            patchedExecutionGuid = new AstVariableNode(package)
            {
                Name = "_patchedExecutionGuid", TypeCode = TypeCode.String, Value = "@[User::_executionGuid] == \"\" ? @[System::ExecutionInstanceGUID] : @[User::_executionGuid]", EvaluateAsExpression = true
            };
            executionGuid = new AstVariableNode(package)
            {
                Name = "_executionGuid", TypeCode = TypeCode.String, Value = String.Empty, InheritFromPackageParentConfigurationString = "User::_patchedExecutionGuid"
            };
            errorDescription = new AstVariableNode(package)
            {
                Name = "ErrorDescription", TypeCode = TypeCode.String, IsSystemVariable = true
            };

            package.Variables.Add(executionGuid);
            package.Variables.Add(parentPackageGuid);
            package.Variables.Add(patchedExecutionGuid);

            if (package.LogConnection != null)
            {
                _packageBuildOnPreExecuteEvent(package);
                _packageBuildOnErrorEvent(package);
                _packageBuildOnEndEvent(package);
            }
        }
コード例 #2
0
        private static void _packageBuildOnPreExecuteEvent(AstPackageBaseNode package)
        {
            var packageEvent = ContainerFindEvent(package.Events, EventType.OnPreExecute);

            if (packageEvent == null)
            {
                packageEvent = new AstTaskEventHandlerNode(package)
                {
                    EventType = EventType.OnPreExecute
                };
                package.Events.Add(packageEvent);
            }

            var preExecContainer = new AstContainerTaskNode(packageEvent)
            {
                Name = "OnPreExec", ConstraintMode = ContainerConstraintMode.Linear
            };

            packageEvent.Tasks.Insert(0, preExecContainer);

            var constrainedCont = new AstContainerTaskNode(packageEvent)
            {
                Name = "ConstrainedContainer", ConstraintMode = ContainerConstraintMode.Parallel
            };

            preExecContainer.Tasks.Add(constrainedCont);

            var executeSql = new AstExecuteSqlTaskNode(preExecContainer)
            {
                Name = "Exec usp_PackageStart",
                ExecuteDuringDesignTime = false,
                Connection = package.LogConnection
            };

            executeSql.PrecedenceConstraints = new AstTaskflowPrecedenceConstraintsNode(executeSql);
            executeSql.PrecedenceConstraints.Inputs.Add(
                new AstTaskflowInputPathNode(executeSql.PrecedenceConstraints)
            {
                Expression          = "@[System::PackageID] == @[System::SourceID]",
                EvaluationOperation = TaskEvaluationOperationType.Expression,
                OutputPath          = constrainedCont.OutputPath
            });
            executeSql.Query = new AstExecuteSqlQueryNode(executeSql)
            {
                Body      = "\"EXEC usp_PackageStart \" + (@[System::PackageName] == \"\" ? \"NULL\" : \"'\"+@[System::PackageName]+\"'\") +\",\"+(@[System::PackageID] == \"\" ? \"NULL\" : \"'\"+@[System::PackageID]+\"'\") +\",\"+(@[User::_parentPackageGuid] == \"\" ? \"NULL\" : \"'\"+@[User::_parentPackageGuid]+\"'\") +\",\"+(@[System::SourceName] == \"\" ? \"NULL\" : \"'\"+@[System::SourceName]+\"'\") +\",\"+(@[System::SourceID] == \"\" ? \"NULL\" : \"'\"+@[System::SourceID]+\"'\") +\",\"+(@[System::SourceParentGUID] == \"\" ? \"NULL\" : \"'\"+@[System::SourceParentGUID]+\"'\") +\",\"+ (@[System::MachineName] == \"\" ? \"NULL\" : \"'\"+@[System::MachineName]+\"'\") +\",\"+(@[System::UserName] == \"\" ? \"NULL\" : \"'\"+@[System::UserName]+\"'\") +\",\"+(@[User::_patchedExecutionGuid] == \"\" ? \"NULL\" : \"'\"+@[User::_patchedExecutionGuid])+\"'\"",
                QueryType = QueryType.Expression
            };
            preExecContainer.Tasks.Add(executeSql);
        }
コード例 #3
0
        private static void _packageBuildOnErrorEvent(AstPackageBaseNode package)
        {
            var packageEvent = ContainerFindEvent(package.Events, EventType.OnError);

            if (packageEvent == null)
            {
                packageEvent = new AstTaskEventHandlerNode(package)
                {
                    EventType = EventType.OnError
                };
                package.Events.Add(packageEvent);
            }

            var executeSql = new AstExecuteSqlTaskNode(packageEvent)
            {
                Name = "Exec usp_PackageError",
                ExecuteDuringDesignTime = false,
                Connection = package.LogConnection
            };

            executeSql.Query = new AstExecuteSqlQueryNode(executeSql)
            {
                Body      = "\"EXECUTE [usp_PackageError] ?,?,?,?,?,?,?,?,?,? \"",
                QueryType = QueryType.Expression
            };

            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "0", Direction = Direction.Input, Variable = packageName, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "1", Direction = Direction.Input, Variable = packageGuid, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "2", Direction = Direction.Input, Variable = parentPackageGuid, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "3", Direction = Direction.Input, Variable = source, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "4", Direction = Direction.Input, Variable = sourceID, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "5", Direction = Direction.Input, Variable = parentSourceID, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "6", Direction = Direction.Input, Variable = machineName, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "7", Direction = Direction.Input, Variable = userName, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "8", Direction = Direction.Input, Variable = patchedExecutionGuid, Length = 255
            });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query)
            {
                Name = "9", Direction = Direction.Input, Variable = errorDescription, Length = -1
            });

            packageEvent.Tasks.Insert(0, executeSql);
        }