|
как снять копию базы средствами ms sql 2012 | ☑ | ||
---|---|---|---|---|
0
sidalexsandr
17.03.17
✎
09:11
|
Поискал в интернете но не нашел. Как создать копию 1с sql базы средствами ms sql server 2012, причем имя копии должно быть UPP_2017-03-11 (то есть UPP_Текущая дата).
|
|||
1
bodri
17.03.17
✎
09:13
|
Один раз снять или всё таки чтоб постоянно копировал с интервалом?
|
|||
2
vde69
17.03.17
✎
09:13
|
&НаКлиенте
// // Процедура ВыгрузитьАрхив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
sidalexsandr
17.03.17
✎
09:15
|
(1) Постоянно, каждую ночь в 2 часа.
|
|||
4
bodri
17.03.17
✎
09:17
|
тогда надо настроить Maintenance Plans в консоли скл
|
|||
5
bodri
17.03.17
✎
09:19
|
||||
6
sidalexsandr
17.03.17
✎
09:25
|
(5) Спасибо.
|
|||
7
1dvd
17.03.17
✎
09:33
|
(3) а сервак не треснит, если каждый день новую копию делать?
|
|||
8
bodri
17.03.17
✎
09:36
|
(7) а с чего он треснит? у меня настроено ежедневная полная архивация сжатием и каждые 3 часа промежуточные. Эти архивы выгружаются на сервак, а потом перекидываются в 2 разных места. Также планировщик удаляет эти архивы которые старше 2-х дней.
|
|||
9
1dvd
17.03.17
✎
09:37
|
(8) архив сколько занимает? А сколько развернутая? Представь 365 баз в год
|
|||
10
1dvd
17.03.17
✎
09:37
|
*через год
|
|||
11
bodri
17.03.17
✎
09:39
|
(9) 2 базы 250 и 300 ГБ, архив 20 и 22 ГБ соответственно. В этих двух местах куда всё скидывается чистятся по определенному сценарию.
|
|||
12
1dvd
17.03.17
✎
09:40
|
(11) вот. А ему нужно каждый день делать новую развернутую копию базы. Про чистку ни слова
|
|||
13
Fish
17.03.17
✎
09:42
|
(8) А зачем каждый день делать полную копию?
|
|||
14
elCust
17.03.17
✎
09:42
|
(0) А зачем восстанавливать под определенной датой?
|
|||
15
Fish
17.03.17
✎
09:50
|
+(13) У нас каждый час - бэкап ЖТ, разностный бэкап - раз в день ночью, ну а полный - раз в неделю.
|
|||
16
Dmitrii
гуру
17.03.17
✎
09:51
|
1dvd дисковое пространство сейчас стоит сущие копейки.
Всерьез обсуждать вопрос экономии на архивах - просто глупо. Этот не то место, где следует экономить. Ежедневный архив - нормальная практика для подавляющего большинства случаев. Более частые полные архивы, скорее всего, бессмысленны - вполне достаточно инкрементальных хоть каждый час. В остальных (более сложных) случаях базы держат в полной модели восстановления. Ну и ни разу не видел, чтобы кто-то хранил ежедневные архивы более года. Как правило, всё что старше года - оставляют только какие-то ключевые архивы на определенные моменты (после закрытия периода - поквартальные, после прохождения аудита и т.п.) |
|||
17
bodri
17.03.17
✎
09:56
|
(12) ну к этому он придет когда место на винтах закончится
|
|||
18
bodri
17.03.17
✎
09:56
|
(13) модель Симпл стоит
|
|||
19
Fish
17.03.17
✎
09:56
|
(16) У нас ежедневные хранятся месяц, полные еженедельные - где-то полгода, потом оставляем одну за месяц, и далее они уезжают на ленту.
|
|||
20
Fish
17.03.17
✎
09:57
|
(18) Тогда понятно. У нас фулл.
|
|||
21
Дарлок
17.03.17
✎
10:00
|
(15) а из разностного бэкапа восстановиться пробовали или только в теории? )
|
|||
22
Дарлок
17.03.17
✎
10:00
|
(20) для какой цели?
|
|||
23
Fish
17.03.17
✎
10:01
|
(21) Почему пробовали? Восстанавливались не раз. Причём на любой момент времени.
|
|||
24
Dmitrii
гуру
17.03.17
✎
10:01
|
(13) >> зачем каждый день делать полную копию?
У нас, например, ежедневно ночью производится обновление статистики и реорганизация индексов. После этой процедуры разностные бекапы (сохраняющие все измененные страницы) резко вырастают в объёме. Поэтому после обновления статистики и реорганизации индексов делаем полный бекап и начиная с него в течении дня ежечасно делаются разностные, весьма малого объема. Модель восстановления у нас простая. Полную считаем избыточной. Ежечасного архива за глаза хватает. Еще не разу не требовалось восстановить базу на какую-то определенную минут или транзакцию. |
|||
25
Dmitrii
гуру
17.03.17
✎
10:02
|
(21) А что не так с разностными бекапами?
У нас ни разу (3 разать тьфу) не было проблем. |
|||
26
Fish
17.03.17
✎
10:02
|
(22) Чтобы можно было восстановиться на любой момент времени, а не на момент создания бэкапа.
|
|||
27
Дарлок
17.03.17
✎
10:10
|
(25) неплохо проверить админов на умение их развертывать )
(26) никогда не встречал такой необходимости. Обычно админы просто по дефолту фулл оставляют. |
|||
28
sidalexsandr
17.03.17
✎
10:40
|
(5) Как сделать имя копии должно быть UPP_2017-03-11 (то есть UPP_Текущая дата)?
|
|||
29
bodri
17.03.17
✎
10:45
|
(28) он сам генерить имя в формате ИмяБазы_ГодМесяцДеньЧасМинутаСекунда
|
|||
30
Одинесю
17.03.17
✎
10:46
|
(28) Батником делал. Копию переименовываешь, переносишь куда надо, удаляешь. Батник регламентом.
|
|||
31
Fish
17.03.17
✎
10:47
|
(27) "никогда не встречал такой необходимости. " - А я частенько. У нас модель фулл выбрана не по умолчанию (вроде по умолчанию как раз симпл, но могу путать), а вполне осознанно и по необходимости.
|
|||
32
bodri
17.03.17
✎
10:50
|
(31) В полной по умолчанию Фулл, а в экспрессе Симпл
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |