пятница, 27 декабря 2013 г.

C# PropsAppReader - чтение файла формата "tag1...\tag1"

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;

namespace Solution.Framework
{
    class PropsAppReader
    {
        string fileName;
        string[] fileText;
        
        
        public PropsAppReader(string f_fileName)
        {
            this.fileName = f_fileName;
            fileText= File.ReadAllLines(f_fileName);
        }

        public string GetValueByParamName(string paramName)      
        {
            string sPattern = "(?<=<" + paramName + ">)(.*)(?=</" + paramName + ">)";
            string OneString = "";

            foreach (string s in fileText)
                OneString += s;


            return Regex.Match(OneString, sPattern).Value.ToString().Trim();
        }


        public string[] GetAllText()
        {
            return fileText;
        }
    }
}


Использование класса Solution:

...

PropsAppReader scriptManager = new PropsAppReader(file_path);


string val1 = PropsAppReader.GetValueByParamName("tag1-name")

string val2 = PropsAppReader.GetValueByParamName("tag2-name")
...
string valN = PropsAppReader.GetValueByParamName("tagN-name")
...


Структура файла:

<tag1-name>Tag1_value</tag1-name>
<tag2-name>Tag2_value</tag2-name>
...
<tagN-name>TagN_value</tagN-name>

вторник, 10 декабря 2013 г.

Автоматический backup базы данных (*.bak) MS SQL Server 2008


sqlcmd -S DECLSERVER\SQLGTD -E -Q "declare @s varchar(255) set @s='E:\backup\GTD_' + convert(varchar(1), datepart(dw, getdate())) + '.bak' backup database GTD to disk = @s with init, noformat, skip, nounload"

sqlcmd позволяет вводить инструкции Transact-SQL, системные процедуры и файлы скриптов из командной строки в редактор запросов в режиме SQLCMD,

где:

  • -S — задает имя сервера, server[\instance_name]
  • DECLSERVER\SQLGTD — имя сервера/имя экземпляра, на котором крутится база;
  • -E — использует для соединения с SQL server вместо имени пользователя и пароля доверительное соединение;
  • -Q " cmdlinequery " — при запуске программы sqlcmd выполняет запрос, но выход из программы по завершении его выполнения не производится. Может быть выполнено несколько запросов, разделенных точкой с запятой. Заключайте запрос в кавычки, как показано выше;
  • declare — объявляем переменную s ,имя переменной всегда начинается с @, поэтому @s. В нашем случае @s — это папка (диск) хранения бэкапов;
  • varchar(n) — задает тип переменной @s как строковый с длинной строки n, в примере 255 символов;
  • set — задает значение переменной @s,в примере это папка backup на диске E (E:\backup\), далее задается имя бэкап файла, где набор функций convert(varchar(1), datepart(dw, getdate())) возвращает в текстовом формате с длиной в 1 символ текущий день недели (понедельник – 1, вторник – 2, и т.д.) и добавляется расширение bak. На выходе получим файл с именем GTD_номер дня недели.bak;
  • backup — создает бэкап;
  • database — указывает на создание бэкапа всей базы;
  • GTD — в нашем примере имя базы на SQLсервере;
  • to disk — указывает на тип устройства резервного хранения, файл жесткого диска, и указана переменная @s, которой присвоено путь и имя создаваемого файла;
  • with init, noformat, skip, nounload — указывает на то, что необходимо произвести перезапись данных по кругу с переопределением заголовков, что позволит нам иметь 7 файлов бэкапа на каждый день недели, перезаписываемые по кругу.

Именно для моего случая строка сценария будет иметь следующий вид:
sqlcmd -S SR-P2K-ORE -E -Q "declare @s varchar(255) set @s='D:\askue-backup\sr-p2k-ore\Piramida2000new_' + replace(replace(replace(CONVERT(VARCHAR(19), GETDATE(), 120), '-', '_'), ':', '_'), ' ', '__') + '.bak' backup database Piramida2000new to disk = @s with init, noformat, skip, nounload"

Docker. Первые контейнеры

Источник:  php.dragomano.ru Структура каталогов: ~/develop/web/project/                  nginx/      - сервис web-сервера                php...