Пример #1
0
        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,
            });
        }
Пример #2
0
        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()
                        }
                    }
                });
            }
        }