public DynamicJsonValue Simulate(SimulateSqlReplication simulateSqlReplication, DocumentsOperationContext context, SqlReplicationScriptResult result) { if (simulateSqlReplication.PerformRolledBackTransaction) { using (var writer = new RelationalDatabaseWriter(_database, context, _predefinedSqlConnection, this)) { return(new DynamicJsonValue { ["Results"] = new DynamicJsonArray(writer.RolledBackExecute(result).ToArray()), ["LastAlert"] = Statistics.LastAlert, }); } } var simulatedwriter = new RelationalDatabaseWriterSimulator(_predefinedSqlConnection, this); var tableQuerySummaries = new List <RelationalDatabaseWriter.TableQuerySummary> { new RelationalDatabaseWriter.TableQuerySummary { Commands = simulatedwriter.SimulateExecuteCommandText(result) .Select(x => new RelationalDatabaseWriter.TableQuerySummary.CommandData { CommandText = x }).ToArray() } }.ToArray(); return(new DynamicJsonValue { ["Results"] = new DynamicJsonArray(tableQuerySummaries), ["LastAlert"] = Statistics.LastAlert, }); }
public DynamicJsonValue SimulateSqlReplicationSqlQueries(SimulateSqlReplication simulateSqlReplication, DocumentsOperationContext context) { try { var document = _database.DocumentsStorage.Get(context, simulateSqlReplication.DocumentId); var sqlReplication = new SqlReplication(_database, simulateSqlReplication.Configuration); var result = sqlReplication.ApplyConversionScript(new List <Document> { document }, context); if (sqlReplication.PrepareSqlReplicationConfig(_connections, false) == false) { return(new DynamicJsonValue { ["LastAlert"] = sqlReplication.Statistics.LastAlert, }); } return(sqlReplication.Simulate(simulateSqlReplication, context, result)); } catch (Exception e) { return(new DynamicJsonValue { ["LastAlert"] = new Alert { Type = AlertType.SqlReplicationError, Severity = AlertSeverity.Error, CreatedAt = SystemTime.UtcNow, Key = simulateSqlReplication.Configuration.Name, Message = "SQL replication error", Content = new ExceptionAlertContent { Message = "Last SQL replication operation for " + simulateSqlReplication.Configuration.Name + " was failed", Exception = e.ToString() } } }); } }