Example #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CommandExecuter" /> class.
 /// </summary>
 /// <param name="nodeNumber">The execution node number.</param>
 /// <param name="arguments">The arguments.</param>
 /// <param name="variableResolver">The variable resolver.</param>
 public CommandExecuter(int nodeNumber, ISqlExecuteArguments arguments, IVariableResolver variableResolver)
 {
     this.NodeNumber       = nodeNumber;
     this.resultsAs        = arguments.OutputAs;
     this.arguments        = arguments;
     this.variableResolver = variableResolver;
 }
        /// <summary>
        /// Creates a command executer.
        /// </summary>
        /// <param name="nodeNumber">The node number.</param>
        /// <param name="args">The command invocation arguments.</param>
        /// <param name="resolver">The resolver.</param>
        /// <returns>
        /// A new <see cref="ICommandExecuter" />
        /// </returns>
        // ReSharper disable once StyleCop.SA1113
        private static ICommandExecuter CreateCommandExecuter(int nodeNumber, ISqlExecuteArguments args, IVariableResolver resolver)
        {
            var exec = new CommandExecuter(nodeNumber, args, resolver)
            {
                ErrorAction =
                    args.AbortOnErrorSet
                                       ? ErrorAction.Exit
                                       : ErrorAction.Ignore
            };

            if (args.OutputMessage != null)
            {
                exec.Message += args.OutputMessage;
            }

            if (args.OutputResult != null)
            {
                exec.Result += args.OutputResult;
            }

            if (args.Connected != null)
            {
                exec.Connected += args.Connected;
            }

            return(exec);
        }
        /// <summary>
        /// Creates a variable resolver.
        /// </summary>
        /// <param name="args">The command invocation arguments.</param>
        /// <returns>A new <see cref="IVariableResolver"/></returns>
        private static IVariableResolver CreateVariableResolver(ISqlExecuteArguments args)
        {
            var resolver = new VariableResolver(
                args.InitialVariables,
                args.OverrideScriptVariablesSet,
                args.DisableCommandsSet);

            resolver.SetSystemVariable("SQLCMDSTATTIMEOUT", args.QueryTimeout.ToString());
            return(resolver);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SqlExecuteImpl"/> class.
        /// </summary>
        /// <param name="arguments">The args.</param>
        public SqlExecuteImpl(ISqlExecuteArguments arguments)
        {
            this.arguments = arguments;

            if (this.arguments.ParseOnly)
            {
                this.arguments.OutputMessage?.Invoke(
                    this,
                    new OutputMessageEventArgs(0, "DRY RUN mode - No SQL will be executed.", OutputDestination.StdOut));
            }

            this.runList = new List <RunConfiguration>();

            var inputFileCount = arguments.InputFile?.Length ?? 0;

            for (var i = 0; i < Math.Max(arguments.ConnectionString.Length, inputFileCount); ++i)
            {
                var r = CreateVariableResolver(arguments);

                this.runList.Add(
                    new RunConfiguration
                {
                    NodeNumber       = i + 1,
                    CommandExecuter  = CreateCommandExecuter(i + 1, arguments, r),
                    ConnectionString =
                        arguments.ConnectionString.Length == 1
                                    ? arguments.ConnectionString[0]
                                    : arguments.ConnectionString[i],
                    InitialBatchSource =
                        this.GetInitialBatchSource(Math.Min(i, inputFileCount - 1)),
                    VariableResolver = r,
                    OutputFile       =
                        string.IsNullOrEmpty(arguments.OutputFile)
                                    ? null
                                    : new OutputFileProperties(
                            FileParameterCommand.GetNodeFilepath(
                                arguments.RunParallel ? i + 1 : 0,
                                arguments.OutputFile),
                            i == 0 || arguments.RunParallel ? FileMode.Create : FileMode.Append)
                });
            }
        }
Example #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TestBatchExecuter"/> class.
 /// </summary>
 /// <param name="args">The arguments.</param>
 /// <param name="variableResolver">The variable resolver.</param>
 public TestBatchExecuter(ISqlExecuteArguments args, VariableResolver variableResolver)
     : base(0, args, variableResolver)
 {
 }