/// <summary> /// Applies the change changeScript. /// </summary> /// <param name="changeScript">The changeScript.</param> /// <param name="scriptContent"></param> /// <param name="output">The output from applying the change changeScript.</param> protected void ApplyChangeScript(ChangeScript changeScript, string scriptContent, StringBuilder output) { var statements = splitter.Split(scriptContent); var i = 0; foreach (var statement in statements) { try { queryExecuter.BeginTransaction(); if (statements.Count > 1) { infoTextWriter.WriteLine(" -> statement " + (i + 1) + " of " + statements.Count + "..."); } queryExecuter.Execute(statement, output); i++; } catch (DbException e) { throw new ChangeScriptFailedException(e, changeScript, i + 1, statement); } finally { // Write out SQL execution output. if (output.Length > 0) { infoTextWriter.WriteLine(output.ToString()); } try { // Commit transaction queryExecuter.CommitTransaction(); } catch (Exception e) { output.Clear(); infoTextWriter.WriteLine(e.ToString()); output.AppendLine(e.Message); RecordScriptStatus(changeScript, ScriptStatus.Failure, output.ToString()); } } } }