static void Main(string[] args) { var path = args[0]; OperationsAPI.initAPI(); OperationsAPI.StageListPath = @"\Configs\ConnectStageList.xml"; OperationsAPI.ConfigPath = @"\Configs\ConnectConfig.xml"; var globalConf = AsyncReplicaOperations.StageConnectSettings.getInstance(); var localConf = new GroupSettings(path); if (!localConf.isValid) { return; } foreach (RuntimeRegionSettings regionSetting in localConf.EntitiesList) { SqlConnection sqlConnection = new SqlConnection(); try { var sqlConnectionBuilder = new SqlConnectionStringBuilder(); sqlConnectionBuilder.DataSource = globalConf.FindId(regionSetting.RegionId).ServerName; sqlConnectionBuilder.InitialCatalog = globalConf.FindId(regionSetting.RegionId).StageDBName; sqlConnectionBuilder.IntegratedSecurity = true; sqlConnection = new SqlConnection(sqlConnectionBuilder.ToString()); if (!SqlConnectionChecker.checkConnection(sqlConnection)) { throw new Exception("Невозможно подключиться к региону " + regionSetting.RegionId); } var command = new SqlCommand("select FILEPATHSAVE,FILEPATHLOAD from REPLICAS", sqlConnection); sqlConnection.Open(); using (var reader = command.ExecuteReader(System.Data.CommandBehavior.CloseConnection)) { while (reader.Read()) { var flushPath = reader.GetString(0); FlushFolder(flushPath); Console.WriteLine(string.Format("[MESSAGE] {0:HH:mm:ss} Папка {1} успешно очищена", DateTime.Now, flushPath)); flushPath = reader.GetString(1); FlushFolder(flushPath); Console.WriteLine(string.Format("[MESSAGE] {0:HH:mm:ss} Папка {1} успешно очищена", DateTime.Now, flushPath)); } } } catch (Exception e) { Console.WriteLine(string.Format("[ERROR] {0:HH:mm:ss} {1}", DateTime.Now, e.Message)); } finally { if (sqlConnection.State == System.Data.ConnectionState.Open) { sqlConnection.Close(); } } } }
static void Main(string[] args) { List <string> errorList = new List <string>(); try { OperationsAPI.initAPI(); OperationsAPI.StageListPath = @"\Configs\ConnectStageList.xml"; Console.WriteLine("Начинается проверка..."); var globalConf = StageConnectSettings.getInstance(); if (globalConf.isValid) { foreach (RegionSetting globalSetting in globalConf.EntitiesList) { var connectionBuilder = new SqlConnectionStringBuilder(); connectionBuilder.DataSource = globalSetting.ServerName; connectionBuilder.InitialCatalog = globalSetting.StageDBName; connectionBuilder.IntegratedSecurity = true; connectionBuilder.ConnectTimeout = 5; connectionBuilder.ConnectRetryCount = 1; if (!SqlConnectionChecker.checkConnection(new SqlConnection(connectionBuilder.ToString()))) { errorList.Add(globalSetting.RegionId); } } if (errorList.Count > 0) { Console.WriteLine("Обнаружены ошибки при валидации:"); foreach (string item in errorList) { Console.WriteLine(string.Format("Регион {0} не валиден. Проверьте настройки соединения", item)); } } else { Console.WriteLine("Не обнаружены ошибки при валидации."); } } else { throw new Exception("Файл конфигурации не валиден"); } } catch (Exception e) { Console.WriteLine("Произошла следующая ошибка: " + e.Message); } finally { Console.ReadKey(); } }
public override IEnumerable<Row> Execute(IEnumerable<Row> rows) { foreach (var row in rows) { var connectionString = row["connectionstring"].ToString(); var sqlConnectionChecker = new SqlConnectionChecker(new[] { connectionString }); if (!sqlConnectionChecker.AllGood()) continue; foreach (var subRow in new InternalOperation(connectionString).Execute(null)) { foreach (var column in row.Columns) subRow.Add(column, row[column]); yield return subRow; } } }
public override IEnumerable <Row> Execute(IEnumerable <Row> rows) { foreach (var row in rows) { var connectionString = row["connectionstring"].ToString(); var sqlConnectionChecker = new SqlConnectionChecker(new[] { connectionString }); if (!sqlConnectionChecker.AllGood()) { continue; } foreach (var subRow in new InternalOperation(connectionString).Execute(null)) { foreach (var column in row.Columns) { subRow.Add(column, row[column]); } yield return(subRow); } } }
public override IEnumerable<Row> Execute(IEnumerable<Row> rows) { var counter = 0; foreach (var row in rows) { counter++; if (counter == 1) { Guard.Against(!row.Contains(CONNECTION_STRING_KEY), "Row must contain connectionstring key."); } _connectionStringBuilder = new SqlConnectionStringBuilder(row[CONNECTION_STRING_KEY].ToString()); var sqlConnectionChecker = new SqlConnectionChecker(new[] { _connectionStringBuilder.ConnectionString }); if (!sqlConnectionChecker.AllGood()) continue; var results = new Database(); var subRows = new List<Row>(); var generator = new Generate() { ConnectionString = _connectionStringBuilder.ConnectionString }; Debug("Started generating definitions on {0} for {1}", _connectionStringBuilder.DataSource, _connectionStringBuilder.InitialCatalog); try { results = generator.Process(); } catch (Exception e) { Warn("Trouble processing objects from {0}.{1}.\nError Message: {2}.", _connectionStringBuilder.DataSource, _connectionStringBuilder.InitialCatalog, e.Message); } Debug("Finished generating defs on {0} for {1}", _connectionStringBuilder.DataSource, _connectionStringBuilder.InitialCatalog); subRows.AddRange(ToRows(results.Procedures, "StoredProcedures", "Stored Procedure")); subRows.AddRange(ToRows(results.Functions, "Functions", "Function")); subRows.AddRange(ToRows(results.Tables, "Tables", "Table")); subRows.AddRange(ToRows(results.Views, "Views", "View")); subRows.AddRange(ToRows(results.Schemas, "Schemas", "Schema")); subRows.AddRange(ToRows(results.Synonyms, "Synonyms", "Synonym")); subRows.AddRange(ToRows(results.FullText, "FullTextCatalogs", "Full Text Catalog")); foreach (var table in results.Tables) { subRows.AddRange(ToRows(table.Indexes, "Indexes", "Index", true)); subRows.AddRange(ToRows(table.Triggers, "Triggers", "Trigger", true)); foreach (var constraint in table.Constraints) { switch (constraint.Type) { case Constraint.ConstraintType.Check: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "CheckConstraints", "Check Constraint", true, true)); break; case Constraint.ConstraintType.Default: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "DefaultConstraints", "Default Constraint", true, true)); break; case Constraint.ConstraintType.ForeignKey: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "ForeignKeys", "Foreign Key", true, true)); break; case Constraint.ConstraintType.PrimaryKey: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "PrimaryKeys", "Primary Key", true, true)); break; case Constraint.ConstraintType.Unique: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "UniqueConstraints", "Unique Constraint", true, true)); break; } } foreach (var index in table.FullTextIndex) subRows.AddRange(ToRows(Enumerable.Repeat(index, 1), "FullTextIndexes", "Full Text Index", true)); } Info("Found {0} in {1}.", subRows.Count, _connectionStringBuilder.InitialCatalog); foreach (var subRow in subRows) { yield return subRow; } } }
public override IEnumerable <Row> Execute(IEnumerable <Row> rows) { var counter = 0; foreach (var row in rows) { counter++; if (counter == 1) { Guard.Against(!row.Contains(CONNECTION_STRING_KEY), "Row must contain connectionstring key."); } _connectionStringBuilder = new SqlConnectionStringBuilder(row[CONNECTION_STRING_KEY].ToString()); var sqlConnectionChecker = new SqlConnectionChecker(new[] { _connectionStringBuilder.ConnectionString }); if (!sqlConnectionChecker.AllGood()) { continue; } var results = new Database(); var subRows = new List <Row>(); var generator = new Generate() { ConnectionString = _connectionStringBuilder.ConnectionString }; Debug("Started generating definitions on {0} for {1}", _connectionStringBuilder.DataSource, _connectionStringBuilder.InitialCatalog); try { results = generator.Process(); } catch (Exception e) { Warn("Trouble processing objects from {0}.{1}.\nError Message: {2}.", _connectionStringBuilder.DataSource, _connectionStringBuilder.InitialCatalog, e.Message); } Debug("Finished generating defs on {0} for {1}", _connectionStringBuilder.DataSource, _connectionStringBuilder.InitialCatalog); subRows.AddRange(ToRows(results.Procedures, "StoredProcedures", "Stored Procedure")); subRows.AddRange(ToRows(results.Functions, "Functions", "Function")); subRows.AddRange(ToRows(results.Tables, "Tables", "Table")); subRows.AddRange(ToRows(results.Views, "Views", "View")); subRows.AddRange(ToRows(results.Schemas, "Schemas", "Schema")); subRows.AddRange(ToRows(results.Synonyms, "Synonyms", "Synonym")); subRows.AddRange(ToRows(results.FullText, "FullTextCatalogs", "Full Text Catalog")); foreach (var table in results.Tables) { subRows.AddRange(ToRows(table.Indexes, "Indexes", "Index", true)); subRows.AddRange(ToRows(table.Triggers, "Triggers", "Trigger", true)); foreach (var constraint in table.Constraints) { switch (constraint.Type) { case Constraint.ConstraintType.Check: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "CheckConstraints", "Check Constraint", true, true)); break; case Constraint.ConstraintType.Default: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "DefaultConstraints", "Default Constraint", true, true)); break; case Constraint.ConstraintType.ForeignKey: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "ForeignKeys", "Foreign Key", true, true)); break; case Constraint.ConstraintType.PrimaryKey: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "PrimaryKeys", "Primary Key", true, true)); break; case Constraint.ConstraintType.Unique: subRows.AddRange(ToRows(Enumerable.Repeat(constraint, 1), "UniqueConstraints", "Unique Constraint", true, true)); break; } } foreach (var index in table.FullTextIndex) { subRows.AddRange(ToRows(Enumerable.Repeat(index, 1), "FullTextIndexes", "Full Text Index", true)); } } Info("Found {0} in {1}.", subRows.Count, _connectionStringBuilder.InitialCatalog); foreach (var subRow in subRows) { yield return(subRow); } } }