Pull to refresh

Comments 32

Велосипед давно уже изобретен — https://ola.hallengren.com/sql-server-backup.html.
Этот велосипед надо собрать в кучу и настроить, а теперь возьмите и посмотрите на половине предприятий с серьезными продуктами администрирование находится в зачаточном состоянии
В какую кучу? Что настроить? Скачали, запустили инсталяционный скрипт (подправив в нем нужные параметры типа пути для бэкапа, которые подробно описаны на странице), пользуемся. Попутно там решаются не менее важные задачи по обслуживанию БД. И не включается потенциальная дырища в безопасности по имени xp_cmdshell. В контексте «дать неподготовленным людям готовое решение» это просто небо и земля по сравнению с вашим вариантом.

> на половине предприятий с серьезными продуктами администрирование находится в зачаточном состоянии

То есть человек не осилил создание планов обслуживания в SSMS, или набрать в гугле ms sql backup script и найти фактически общеизвестное решение, зато прочитает вас на Хабре, возрадуется, и станет у него всё хорошо. Ну, логично.
По поводу вашей ссылки я честно не смотрел, спутал с другим решением, вполне юзабельно…

Кто вам сказал, что «xp_cmdshell» — это дыра в безопасности? Не буду говорить про других, но там где я работал рано или поздно в масштабных проектах эта процедура включается просто потому, что иначе дольше/сложнее/ и т.д.

Рад, что у вас своё мнение, вас не призывает ни кто использовать мой предложенное решение, те кто готов пойти дальше в итоге сделают как им захочется, ну а тем, кому не надо/не нужно, но служба обязывает…
Думаю понятно о чем я
> Кто вам сказал, что «xp_cmdshell» — это дыра в безопасности?

Это шутка? Про риски для безопасности прямо в штатной документации написано, да и подумать можно, чем чревато исполнение произвольных команд ОС в контексте SQL-сервера. И погуглить можно, и найти рекомендации типа «Generally speaking, you must avoid using xp_cmdshell, and if possible, you should remove any dependency on it.» прямо на сайте MS.

> включается просто потому, что иначе дольше/сложнее/ и т.д.

Может, в каких-то проектах она и включается по необходимости для чего-то ещё. Но в этом конкретном случае вы лично иллюстрируете свои же слова о том, что «администрирование находится в зачаточном состоянии ». Вы используете мощный, но специфический и потенциально опасный инструмент абсолютно не по назначению.

> Думаю понятно о чем я

Мне понятно одно — интернет чем дальше, тем больше замусорен всякой фигнёй. Есть огромное количество примеров, когда люди вместо того, чтобы использовать широко известное правильно работающее решение, колхозят что-то свое. Само по себе это, разумеется, не плохо, сам так делаю (вполне вероятно, что в конкретном случае в собственной инфраструктуре решение будет лучше общедоступного, хотя у вас даже не этот случай), но когда этот колхоз выкладывается в интернет под соусом «готовое решение для неподготовленных людей», а те самые неподготовленные люди на это ведутся, это уже не просто плохо, а очень плохо.
Права серверу давайте соответсвующие и не будет «дыры»
Поверьте я знаю, что пишет об это MS, вы в реальности живете или на отдельно настроенной системе в вакууме, я не призываю использовать, но глупо пользоваться ножем, там где нужна пила
>Права серверу давайте соответсвующие и не будет «дыры»
>Поверьте я знаю, что пишет об это MS

Извините, но второе предложение противоречит первому. Потенциальная опасность будет в любом случае, другое дело, что определенными мерами (отнюдь не только «права серверу дайте») степень опасности можно снизить, но вы об этих мерах ничего не рассказываете — просто включили, и всё.

> но глупо пользоваться ножем, там где нужна пила

Третий раз — ДЛЯ БЭКАПОВ эта процедура НЕ НУЖНА. Ни в вакууме, ни где-то ещё. Если вы считаете, что её надо включать для бэкапа — это просто безграмотность, а рекомендация делать так другим — ещё полная безответственность по отношению к людям, для которых вы якобы пишете.
Если, например, пользоваться сторонним софтом, ещё не известно, что в нем может быть, тут по крайней мере я знаю что делаю и представляю где и что меня может ждать
Я еще в конце сжимаю rar кусками по 20Mb и через FTP отправляю на другой континент. И так лет 5 уже.
Так как не знаю где будет нанесёс первый удар.
Геораспределенное хранение это хорошо, поддерживаю, но не всегда целесообразно
Назначенное задание MS SQLAgent
с версией Express Edition такое не получится, как я понимаю?
я для себя открыл SQLBackupAndFTP — вполне юзабельно, выполняет задание по времени, как сервис, можно и купить, что бы использовать удаленные хранилища, а меня устраивает и бесплатная возможность бакапить на FTP
Для SQL Express можно использовать планировщик Windows и скрипт обернуть например в VBS
Вижу резервное копирование, а не архивацию.
И да, все это делается встроенным визардом без единой строчки кода.
Объясните несведущему, чем оно лучше планов обслуживания, если не требуется отправлять РК частями по электронке на другой континент?
Ну во первых удобнее работать, добавили базу, она «подхватилась»
Во вторых проще контролировать выполнение
В третьих сразу следить за достаточным кол-вом копий и удаляет уже не нужные архивы
В четвертых у вас одно задание для всего

Всё это можно сделать и в планах обслуживания, но для этого придется потрудится, я пояснял в статье, что данное решение именно для неподготовленных особо пользователей, работающее «из коробки», реализованное стандартными средствами и работающее пожалуй на всех версиях с 2000 SQL точно (если убрать сжатие)
Всё это можно сделать и в планах обслуживания, но для этого придется потрудится

Не знаю, что сложнее, потыкать мышкой 20 минут и настроить бекапы, очистки, оповещения и все нужные вещи или курить скрипт из статьи.
UFO landed and left these words here
А чем встроенные средства бекапирования не подходят? Версию express в рассмотрение не беру.
Вы про Планы обслуживания? На часть вопросов ответил выше ну и SSIS нужен для их работы
UFO landed and left these words here
Планы обслуживания прекрасно работают без установленного SSIS, а с SSIS можно просто творить чудеса
Как у вас пакеты исполняются без подсистемы SSIS? Встроенные мастера для планов обслуживания генерируют пакеты SSIS
UFO landed and left these words here
А чем не нравится PackDb (инструкция тут)? Написать простейший скрипт для архивирования сразу в сжатый архив и засунуть его в Task Scheduler, будет работать со всеми версиями MS SQL
А бэкап транзакционных логов?
Как я вижу примерный план:
1. По выходным полный бэкап баз, со сроком хранения Х-недель
2. Каждый рабочий день диффиринциальный бэкап по ночам, со сроком хранения не менее 7 дней
3. Каждый час (пол часа) бэкап транзакшен логов со сроком хранения не менее 7 дней

При этом желательно бэкапы разносить по разным местам.
Про логи я написал в статье, доделать ничего не мешает
Иногда использую скрипт ниже, создается CMDшник и вешается на планировщик windows
for /f «delims=.» %%i in ('wmic.exe OS get LocalDateTime ^| find "."') do set sDateTime=%%i
rem echo %sDateTime%

set DIR_BACKUP=D:\arcdb\
set NAME_DB=DataBaseName
set NAME_ARC_FILE=%NAME_DB%_%sDateTime%.bak
set NAME_PC=ASUS-PC\SQLEXPRESS

rem md %DIR_BACKUP%

osql -UUserName -PPassword -S %NAME_PC% -Q «BACKUP DATABASE %NAME_DB% TO DISK = '%DIR_BACKUP%\%NAME_ARC_FILE%' with init»
Pause
Sign up to leave a comment.

Articles