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();
                    }
                }
            }
        }
Beispiel #2
0
        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;
                }
            }
        }
Beispiel #4
0
        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;
                }

            }
        }
Beispiel #6
0
        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);
                }
            }
        }