Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
dellmaster
Member

Откуда:
Сообщений: 11
Помогите пожалуйста
надо бекапить базу данных по крону на удаленный фтп сервер.
Может у кого пример кода есть?
очень надо.
нагуглить чтото не получается.
28 июн 11, 23:45    [10889993]     Ответить | Цитировать Сообщить модератору
 Re: бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
dellmaster,

BOL:
BACKUP DATABASE, примеров там хватает.
28 июн 11, 23:49    [10890010]     Ответить | Цитировать Сообщить модератору
 Re: бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
dellmaster
Member

Откуда:
Сообщений: 11
Fire83,

спасибо огромное!!!
я так понимаю мне надо выполнить команлду такого типа
BACKUP DATABASE AdventureWorks2008R2
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak';
GO

Только остается вопрос можно ли бекап сразу залить на удаленный фтп сервер??
или надо сначала сохранять сначала на локальный диск а потом уже брать этот файл и закидывать на уделенный фтп??
Заранее благодарен
28 июн 11, 23:58    [10890044]     Ответить | Цитировать Сообщить модератору
 Re: бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
dellmaster,

Если сервер доступен в сети можно делать бекап сразу в сетевую шару, только нужны соответствующие права на удаленную директорию. Если же речь идет об удаленном FTP сервере то бекапить локально, а затем туда заливать.
29 июн 11, 16:18    [10894153]     Ответить | Цитировать Сообщить модератору
 Re: бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
dellmaster
Member

Откуда:
Сообщений: 11
Fire83,

В общем, возможно комуто пригодится

Полностью весть процесс создания бекапа, сжатие файла бекапа и заливка его на удаленный ФТП сервер
30 июн 11, 22:29    [10903152]     Ответить | Цитировать Сообщить модератору
 Re: бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
dellmaster
Member

Откуда:
Сообщений: 11
Fire83,

В общем, возможно комуто пригодится

Полностью весть процесс создания бекапа, сжатие файла бекапа и заливка его на удаленный ФТП сервер

//непосредственно создание бекапа и сохранение его на локальный диск
SqlConnection CurrentOrdersCon = new SqlConnection(строка подключения к базе);
        SqlCommand CurrentOrdersCommand = new SqlCommand(@"BACKUP DATABASE [имя базы данный, у меня сработало только в квадратных скобках] TO DISK = 'физический путь к фалу бекапа' WITH INIT", CurrentOrdersCon); //WITH INIT - это для того чтобы бекап каждый раз переписывался, иначе в старый дописывается новый
        CurrentOrdersCon.Open();
        CurrentOrdersCommand.ExecuteNonQuery();
        CurrentOrdersCon.Close();
       
//теперь зазипуем наш бекап с использованием библиотеки FastZip  http://wiki.sharpdevelop.net/SharpZipLib_FastZip.ashx
        bool recurse = true;  // Include all files by recursing through the directory structure
        string filter = @"\\.bak$"; // Only files ending in ".bak"
        
        string PathToBackupFolder = @"путь к корню сайта";
        
        
        DateTime NowDate = DateTime.Now;
        

        FastZip fZip = new FastZip();
        fZip.CreateZip(PathToBackupFolder + @"zip_backups\backup_sql.zip", PathToBackupFolder + @"backups\", recurse, "");

// теперь зальем зазипованый файл на фтп

        string FinalFile = PathToBackupFolder + @"zip_backups\backup_sql.zip";

        FileStream fs = new FileStream(FinalFile, FileMode.Open);
        byte[] fileContents;
        fileContents = new byte[fs.Length];
        fs.Read(fileContents, 0, (int)fs.Length);

        FileInfo fi = new FileInfo(FinalFile);

        string FTPServerURI = @"ftp://логин:пароль@сервер:21/backups/"; //тут пишем куда надо будет залить наш бекап
        //FTPServerURI must be in the format of:
        string ZipFileName = "sql_backup_" + NowDate.Day.ToString() + "_" + NowDate.Month.ToString() + "_" + NowDate.Year.ToString() +
            "__" + NowDate.Hour.ToString() + "_" + NowDate.Minute.ToString() + "_" + NowDate.Second.ToString();
       
        string uri = string.Format("{0}{1}", FTPServerURI, ZipFileName + fi.Extension);
        
        FtpWebRequest ftp_request = (FtpWebRequest)FtpWebRequest.Create(uri);
        ftp_request.Method = WebRequestMethods.Ftp.UploadFile;
        Stream strm = ftp_request.GetRequestStream();
        strm.Write(fileContents, 0, fileContents.Length);

//ГОТОВО!!!

Проверено лично - этот скрипт запускается у меня по крону 1 раз в сутки, и заливает бекап на мой второй хостинг.
размер БД у меня 11 мегабайт - в результате получаются зип архивы размером 3,4 мегабайта

Думаю комунибуть пригодится.
30 июн 11, 23:00    [10903229]     Ответить | Цитировать Сообщить модератору
 Re: бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
dellmaster
Только остается вопрос можно ли бекап сразу залить на удаленный фтп сервер??
или надо сначала сохранять сначала на локальный диск а потом уже брать этот файл и закидывать на уделенный фтп??
Заранее благодарен


2 варианта:
1. писать свою DLL для MSSQL, чтобы её потом подцепить как extended store procedure
2. скриптом вызвать батник, который сделает бэкап, запакует бэкап как надо и вышлет его куда надо.
1 июл 11, 04:34    [10903780]     Ответить | Цитировать Сообщить модератору
 Re: бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
dellmaster
Только остается вопрос можно ли бекап сразу залить на удаленный фтп сервер??
или надо сначала сохранять сначала на локальный диск а потом уже брать этот файл и закидывать на уделенный фтп??
Заранее благодарен

Всегда - сначала локально...
Ну или что там есть в Netbios
1 июл 11, 04:36    [10903781]     Ответить | Цитировать Сообщить модератору
 Re: бекап базы данных MS SQL Server 2008 R2 на удаленный фтп сервер по крону  [new]
dellmaster
Member

Откуда:
Сообщений: 11
Makar4ik,

в предидущем посте я уже показал скрипт решающий эту задачу.
1 июл 11, 16:04    [10907537]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить