как снять копию базы средствами ms sql 2012 #793239


#0 by sidalexsandr
Поискал в интернете но не нашел. Как создать копию 1с sql базы средствами ms sql server 2012, причем имя копии должно быть UPP_2017-03-11 (то есть UPP_Текущая дата).
#1 by bodri
Один раз снять или всё таки чтоб постоянно копировал с интервалом?
#2 by vde69
&НаКлиенте // // Процедура ВыгрузитьАрхивSQL(ЛокальноеИмяАрхива, Отказ) Экспорт     Попытка         мИмяБДSQL = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.БазаИсточник, "ИмяБДSQL");         мСерверSQL = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.БазаИсточник, "СерверSQL");                  COMОбъектSQL = СоздатьПодключениеSQL(мСерверSQL, мИмяБДSQL);                              COMОбъектSQL.Execute("USE " + СокрЛП(мИмяБДSQL) + ";                 |BACKUP DATABASE " + СокрЛП(мИмяБДSQL) + "         |TO DISK = '" + СокрЛП(ЛокальноеИмяАрхива) + "'         |WITH COPY_ONLY, NOFORMAT, NOINIT, COMPRESSION, SKIP, NOREWIND, NOUNLOAD,  STATS = 10         |;");         УстановитьСтатусОперации("Выгрузка", 3);     Исключение         Сообщить(ОписаниеОшибки);         Отказ = Истина;         УстановитьСтатусОперации("Выгрузка", 2);     КонецПопытки; КонецПроцедуры &НаКлиенте // // Процедура  ЗагрузитьАрхивSQL(ЛокальноеИмяАрхива, ИмяБазыИсточника, ИмяDBO, Отказ) Экспорт     Попытка         мИмяБДSQL = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.БазаДляКопии, "ИмяБДSQL");         мСерверSQL = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.БазаДляКопии, "СерверSQL");                  ИмяФайлаДанных = "";         ИмяФайлаЛога = "";                  COMОбъектSQL = СоздатьПодключениеSQL(мСерверSQL, "master");                      Рекордсет = Новый COMОбъект("ADODB.RecordSet");         Command = Новый COMОбъект("ADODB.Command");         Command.ActiveConnection = COMОбъектSQL;         Command.CommandText =             "select mf.physical_name             |from sys.master_files as mf             |    join sys.databases as mb             |    on mb.database_id = mf.database_id             |WHERE     (mb.name = '"+мИмяБДSQL+"' and mf.type=0)";         Command.CommandType = 1;         Рекордсет = Command.Execute;         Рекордсет.MoveFirst;                         Пока не Рекордсет.EOF Цикл             ИмяФайлаДанных = Рекордсет.Fields("physical_name").Value;             Рекордсет.MoveNext;         КонецЦикла;         Command.CommandText =             "select mf.physical_name             |from sys.master_files as mf             |    join sys.databases as mb             |    on mb.database_id = mf.database_id             |WHERE     (mb.name = '"+мИмяБДSQL+"' and mf.type=1)";         Command.CommandType = 1;         Рекордсет = Command.Execute;         Рекордсет.MoveFirst;                         Пока не Рекордсет.EOF Цикл             ИмяФайлаЛога = Рекордсет.Fields("physical_name").Value;             Рекордсет.MoveNext;         КонецЦикла;                  ЗаписатьНачалоОперацииНаСервере ;                  ТекстКоманды =             "RESTORE DATABASE " + СокрЛП(мИмяБДSQL) + "             |FROM DISK = '" + СокрЛП(ЛокальноеИмяАрхива) + "'             |WITH FILE = 1, NOUNLOAD,  REPLACE,  STATS = 5,             |MOVE N'"+ИмяБазыИсточника+"' TO N'"+ИмяФайлаДанных+"',             |MOVE N'"+ИмяБазыИсточника+"_log' TO N'"+ИмяФайлаЛога+"';";                  COMОбъектSQL.Execute(ТекстКоманды);                  ТекстКоманды = "ALTER AUTHORIZATION ON DATABASE::"+ СокрЛП(мИмяБДSQL) +" TO " + СокрЛП(ИмяDBO) + ";";                  COMОбъектSQL.Execute(ТекстКоманды);         УстановитьСтатусОперации("Загрузка", 3);     Исключение         Сообщить(ОписаниеОшибки);         Отказ = Истина;         УстановитьСтатусОперации("Загрузка", 2);     КонецПопытки; КонецПроцедуры
#3 by sidalexsandr
Постоянно, каждую ночь в 2 часа.
#4 by bodri
тогда надо настроить Maintenance Plans в консоли скл
#5 by bodri
+
#6 by sidalexsandr
Спасибо.
#7 by 1dvd
а сервак не треснит, если каждый день новую копию делать?
#8 by bodri
а с чего он треснит? у меня настроено ежедневная полная архивация сжатием и каждые 3 часа промежуточные. Эти архивы выгружаются на сервак, а потом перекидываются в 2 разных места. Также планировщик удаляет эти архивы которые старше 2-х дней.
#9 by 1dvd
архив сколько занимает? А сколько развернутая? Представь 365 баз в год
#10 by 1dvd
*через год
#11 by bodri
2 базы 250 и 300 ГБ, архив 20 и 22 ГБ соответственно. В этих двух местах куда всё скидывается чистятся по определенному сценарию.
#12 by 1dvd
вот. А ему нужно каждый день делать новую развернутую копию базы. Про чистку ни слова
#13 by Fish
А зачем каждый день делать полную копию?
#14 by elCust
А зачем восстанавливать под определенной датой?
#15 by Fish
+ У нас каждый час - бэкап ЖТ, разностный бэкап - раз в день ночью, ну а полный - раз в неделю.
#16 by Dmitrii
дисковое пространство сейчас стоит сущие копейки. Всерьез обсуждать вопрос экономии на архивах - просто глупо. Этот не то место, где следует экономить. Ежедневный архив - нормальная практика для подавляющего большинства случаев. Более частые полные архивы, скорее всего, бессмысленны - вполне достаточно инкрементальных хоть каждый час. В остальных (более сложных) случаях базы держат в полной модели  восстановления. Ну и ни разу не видел, чтобы кто-то хранил ежедневные архивы более года. Как правило, всё что старше года - оставляют только какие-то ключевые архивы на определенные моменты (после закрытия периода - поквартальные, после прохождения аудита и т.п.)
#17 by bodri
ну к этому он придет когда место на винтах закончится
#18 by bodri
модель Симпл стоит
#19 by Fish
У нас ежедневные хранятся месяц, полные еженедельные - где-то полгода, потом оставляем одну за месяц, и далее они уезжают на ленту.
#20 by Fish
Тогда понятно. У нас фулл.
#21 by Дарлок
а из разностного бэкапа восстановиться пробовали или только в теории? )
#22 by Дарлок
для какой цели?
#23 by Fish
Почему пробовали? Восстанавливались не раз. Причём на любой момент времени.
#24 by Dmitrii
>> зачем каждый день делать полную копию? У нас, например, ежедневно ночью производится обновление статистики и реорганизация индексов. После этой процедуры разностные бекапы (сохраняющие все измененные страницы) резко вырастают в объёме. Поэтому после обновления статистики и реорганизации индексов делаем полный бекап и начиная с него в течении дня ежечасно делаются разностные, весьма малого объема. Модель восстановления у нас простая. Полную считаем избыточной. Ежечасного архива за глаза хватает. Еще не разу не требовалось восстановить базу на какую-то определенную минут или транзакцию.
#25 by Dmitrii
А что не так с разностными бекапами? У нас ни разу (3 разать тьфу) не было проблем.
#26 by Fish
Чтобы можно было восстановиться на любой момент времени, а не на момент создания бэкапа.
#27 by Дарлок
неплохо проверить админов на умение их развертывать ) никогда не встречал такой необходимости. Обычно админы просто по дефолту фулл оставляют.
#28 by sidalexsandr
Как сделать имя копии должно быть UPP_2017-03-11 (то есть UPP_Текущая дата)?
#29 by bodri
он сам генерить имя в формате ИмяБазы_ГодМесяцДеньЧасМинутаСекунда
#30 by Одинесю
Батником делал. Копию переименовываешь, переносишь куда надо, удаляешь. Батник регламентом.
#31 by Fish
"никогда не встречал такой необходимости. " - А я частенько. У нас модель фулл выбрана не по умолчанию (вроде по умолчанию как раз симпл, но могу путать), а вполне осознанно и по необходимости.
#32 by bodri
В полной по умолчанию Фулл, а в экспрессе Симпл
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С