protected void LoadConfigurations() { DocumentsOperationContext context; using (_database.DocumentsStorage.ContextPool.AllocateOperationContext(out context)) { context.OpenReadTransaction(); var sqlReplicationConnections = _database.DocumentsStorage.Get(context, Constants.SqlReplication.SqlReplicationConnections); if (sqlReplicationConnections != null) { object connections; if (sqlReplicationConnections.Data.TryGetMember("Connections", out connections)) { _connections = connections as BlittableJsonReaderObject; } } var documents = _database.DocumentsStorage.GetDocumentsStartingWith(context, Constants.SqlReplication.SqlReplicationConfigurationPrefix, null, null, 0, MaxSupportedSqlReplication); foreach (var document in documents) { var configuration = JsonDeserializationServer.SqlReplicationConfiguration(document.Data); var sqlReplication = new SqlReplication(_database, configuration); Replications.Add(sqlReplication); if (sqlReplication.ValidateName() == false || sqlReplication.PrepareSqlReplicationConfig(_connections) == false) { return; } sqlReplication.Start(); } } }
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() } } }); } }