public override int Run(string[] args) { _logger = new Logger(Verbose); if (!Overwrite && Directory.Exists(ScriptDir)) { if (!ConsoleQuestion.AskYN($"{ScriptDir} already exists - do you want to replace it")) { return(1); } } var scriptCommand = new ScriptCommand { ConnectionString = ConnectionString, DbName = DbName, Pass = Pass, ScriptDir = ScriptDir, Server = Server, User = User, Logger = _logger, Overwrite = Overwrite }; var filteredTypes = HandleFilteredTypes(); var namesAndSchemas = HandleDataTables(DataTables); try { scriptCommand.Execute(namesAndSchemas, DataTablesPattern, DataTablesExcludePattern, TableHint, filteredTypes); } catch (Exception ex) { throw new ConsoleHelpAsException(ex.ToString()); } return(0); }
public override int Run(string[] remainingArguments) { var sourceDb = new Database(); var targetDb = new Database(); sourceDb.Connection = _source; targetDb.Connection = _target; sourceDb.Load(); targetDb.Load(); DatabaseDiff diff = sourceDb.Compare(targetDb); if (diff.IsDiff) { Console.WriteLine("Databases are different."); Console.WriteLine(diff.SummarizeChanges(_verbose)); if (!string.IsNullOrEmpty(_outDiff)) { Console.WriteLine(); if (!_overwrite && File.Exists(_outDiff)) { if (!ConsoleQuestion.AskYN(string.Format("{0} already exists - do you want to replace it", _outDiff))) { return(1); } } File.WriteAllText(_outDiff, diff.Script()); Console.WriteLine("Script to make the databases identical has been created at {0}", Path.GetFullPath(_outDiff)); } return(1); } Console.WriteLine("Databases are identical."); return(0); }
public override int Run(string[] args) { Database db = CreateDatabase(); db.Load(); if (!string.IsNullOrEmpty(DataTables)) { HandleDataTables(db, DataTables); } if (!string.IsNullOrEmpty(DataTablesPattern)) { List <Table> tables = db.FindTablesRegEx(DataTablesPattern); foreach (Table t in tables.Where(t => !db.DataTables.Contains(t))) { db.DataTables.Add(t); } } if (!Overwrite && Directory.Exists(db.Dir)) { if (!ConsoleQuestion.AskYN(string.Format("{0} already exists - do you want to replace it", db.Dir))) { return(1); } } db.ScriptToDir(TableHint); Console.WriteLine("Snapshot successfully created at " + db.Dir); return(0); }
public override int Run(string[] remainingArguments) { if (!string.IsNullOrEmpty(_outDiff)) { Console.WriteLine(); if (!_overwrite && File.Exists(_outDiff)) { var question = string.Format("{0} already exists - do you want to replace it", _outDiff); if (!ConsoleQuestion.AskYN(question)) { return(1); } } } var compareCommand = new CompareCommand { Source = _source, Target = _target, Verbose = _verbose, OutDiff = _outDiff }; try { return(compareCommand.Execute() ? 1 : 0); } catch (Exception ex) { throw new ConsoleHelpAsException(ex.Message); } }
public override int Run(string[] args) { var db = CreateDatabase(); if (!Overwrite && Directory.Exists(db.Dir)) { if (!ConsoleQuestion.AskYN(string.Format("{0} already exists - do you want to replace it", db.Dir))) { return(1); } } Log(TraceLevel.Verbose, "Loading database schema..."); db.Load(); Log(TraceLevel.Verbose, "Database schema loaded."); if (!string.IsNullOrEmpty(DataTables)) { HandleDataTables(db, DataTables); } if (!string.IsNullOrEmpty(DataTablesPattern)) { var tables = db.FindTablesRegEx(DataTablesPattern); foreach (var t in tables.Where(t => !db.DataTables.Contains(t))) { db.DataTables.Add(t); } } db.ScriptToDir(TableHint, Log); Log(TraceLevel.Info, Environment.NewLine + "Snapshot successfully created at " + db.Dir); var routinesWithWarnings = db.Routines.Select(r => new { Routine = r, Warnings = r.Warnings().ToList() }).Where(r => r.Warnings.Any()).ToList(); if (routinesWithWarnings.Any()) { Log(TraceLevel.Info, "With the following warnings:"); foreach ( var warning in routinesWithWarnings.SelectMany( r => r.Warnings.Select( w => string.Format("- {0} [{1}].[{2}]: {3}", r.Routine.RoutineType, r.Routine.Owner, r.Routine.Name, w)))) { Log(TraceLevel.Warning, warning); } } return(0); }
public override int Run(string[] remainingArguments) { Database db = CreateDatabase(); if (!Directory.Exists(db.Dir)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Snapshot dir {0} does not exist.", db.Dir); Console.ForegroundColor = ConsoleColor.White; return(1); } if (DBHelper.DbExists(db.Connection) && !Overwrite) { if (!ConsoleQuestion.AskYN(string.Format("{0} {1} already exists - do you want to drop it", Server, DbName))) { Console.WriteLine("Create command cancelled."); return(1); } Overwrite = true; } try { db.CreateFromDir(Overwrite); Console.WriteLine(); Console.WriteLine("Database created successfully."); } catch (BatchSqlFileException ex) { Console.WriteLine(); Console.WriteLine(@"Create completed with the following errors:"); Console.ForegroundColor = ConsoleColor.Red; foreach (SqlFileException e in ex.Exceptions) { Console.WriteLine(@"{0} (Line {1}): {2}", e.FileName.Replace("/", "\\"), e.LineNumber, e.Message); } Console.ForegroundColor = ConsoleColor.White; return(-1); } catch (SqlFileException ex) { Console.ForegroundColor = ConsoleColor.Red; Console.Write(@"An unexpected SQL error occurred while executing scripts, and the process wasn't completed. {0} (Line {1}): {2}", ex.FileName.Replace("/", "\\"), ex.LineNumber, ex.Message); Console.ForegroundColor = ConsoleColor.White; return(-1); } return(0); }
public override int Run(string[] args) { Database db = CreateDatabase(); db.Load(); if (!string.IsNullOrEmpty(DataTables)) { HandleDataTables(db, DataTables); } if (!string.IsNullOrEmpty(DataTablesPattern)) { List <Table> tables = db.FindTablesRegEx(DataTablesPattern); foreach (Table t in tables.Where(t => !db.DataTables.Contains(t))) { db.DataTables.Add(t); } } if (!Overwrite && Directory.Exists(db.Dir)) { if (!ConsoleQuestion.AskYN(string.Format("{0} already exists - do you want to replace it", db.Dir))) { return(1); } } db.ScriptToDir(TableHint); Console.WriteLine("Snapshot successfully created at " + db.Dir); var routinesWithWarnings = db.Routines.Select(r => new { Routine = r, Warnings = r.Warnings().ToList() }).Where(r => r.Warnings.Any()).ToList(); if (routinesWithWarnings.Any()) { Console.WriteLine("With the following warnings:"); foreach (var warning in routinesWithWarnings.SelectMany(r => r.Warnings.Select(w => string.Format("- {0} [{1}].[{2}]: {3}", r.Routine.RoutineType, r.Routine.Owner, r.Routine.Name, w)))) { Console.WriteLine(warning); } } return(0); }
private static int Main(string[] args) { try { return(ConsoleCommandDispatcher.DispatchCommand( GetCommands(), args, Console.Out)); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); return(-1); } finally { #if DEBUG if (Debugger.IsAttached) { ConsoleQuestion.WaitForKeyPress(); } #endif } }
public override int Run(string[] remainingArguments) { var db = CreateDatabase(); if (!Directory.Exists(db.Dir)) { Log(TraceLevel.Error, string.Format("Snapshot dir {0} does not exist.", db.Dir)); return(1); } if (!Overwrite) { Log(TraceLevel.Verbose, "Checking if database already exists..."); if (DBHelper.DbExists(db.Connection)) { if (!ConsoleQuestion.AskYN(string.Format("{0} {1} already exists - do you want to drop it", Server, DbName))) { Console.WriteLine("Create command cancelled."); return(1); } Overwrite = true; } } try { db.CreateFromDir(Overwrite, Log); Log(TraceLevel.Info, Environment.NewLine + "Database created successfully."); } catch (BatchSqlFileException ex) { Log(TraceLevel.Info, Environment.NewLine + "Create completed with the following errors:"); foreach (var e in ex.Exceptions) { Log(TraceLevel.Info, string.Format("- {0} (Line {1}):", e.FileName.Replace("/", "\\"), e.LineNumber)); Log(TraceLevel.Error, string.Format(" {0}", e.Message)); } return(-1); } catch (SqlFileException ex) { Log(TraceLevel.Info, Environment.NewLine + string.Format(@"An unexpected SQL error occurred while executing scripts, and the process wasn't completed. {0} (Line {1}):", ex.FileName.Replace("/", "\\"), ex.LineNumber)); Log(TraceLevel.Error, ex.Message); return(-1); } return(0); }
private static int Main(string[] args) { //SqlServerTypes.Utilities.LoadNativeAssemblies(Microsoft.SqlServer.Server.MapPath("~")); //SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin")); //SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory); try { return(ConsoleCommandDispatcher.DispatchCommand( GetCommands(), args, Console.Out)); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); return(-1); } finally { #if DEBUG Console.WriteLine("Debug"); if (Debugger.IsAttached) { ConsoleQuestion.WaitForKeyPress(); } #endif } }