Pull to refresh

Comments 27

Я не очень люблю powershell. А велосипеды люблю :). Но вообще, инструмент, конечно, крутой
При выполнении бэкапа на шару, у учётной записи, под которой запущен SQL Server, должны быть права для записи туда.

можно вот так сначала сделать
net use L:
-- enable xp_cmdshell
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
GO

EXEC xp_cmdshell 'net use l: \\10.1.1.1\backups /user:domain\username PASSWORD'
--EXEC xp_cmdshell 'net use l: \\storage\backup'

GO

--EXEC xp_cmdshell 'net use l: /delete'

-- disable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 0
RECONFIGURE
GO


и соответственно все бэкапы делать на диск L

Есть такая поговорка: Code is a liability not an asset. Вы написали простыню business-cricial кода, в котором пустое множество тестов. Если вы такое оставите после себя работодателю, ваш вклад в компанию будет отрицательным.


Откуда вы знаете, что эта штука работает?

wut? Я написал пару скриптов для развового выполнения. Это не оставляют работадателю — это выполняют и выбрасывают, область применения очень узкая

Вы написали статью для общественности, и там простыня кода, которую вы написали и выкинули. Где-то тут что-то не сходится.

Не читатель?
Выводы
А нет никаких выводов. Подумал, что кому-то может быть полезно/интересно посмотреть как использовать метаданные для формирования и выполнения dynamic sql.

Человек чем-то работающим поделился, а вы ещё и недовольны :-). Ну юзайте платное ПО, может там меньше ошибок или лучше тесты, но вы это никогда не узнаете, т. к. оно чёрный ящик. А тут простой скрипт, всё на виду. Хочется сделать ещё более безопасно — допишите и поделитесь результатом. Хаять чужие решения больно все горазды.

При узком канале я бы пожалуй rar-ом воспользовался, а не встроенной компрессией. Ну и скрипт в шелле, запускающий бекапы через sqlcmd. Наверное :)

Тогда уж сразу offline > 7zip > copy > unpack > attach
Detach — копирование — Attach рассматривался, но не подошёл, поскольку канал был довольно узким и перенос БД в несжатом виде занял бы довольно большой промежуток времени.

Кстати, действительно, что мешало сделать промежуточное сжатие выключенной БД перед копированием.
Тут месяц назад как раз была тема выбора оптимальной стратегии сжатия.
habr.com/en/company/homecredit/blog/484414
Ничего не мешало, но нужен дополнительный инструмент и вызов его через xpcmdshell, либо какая-то обёртка — cmd/powershell. А тут всё стандартными средствами.
Этот вариант удобен тем, что время простоя минимально — пока бэкап льётся по узкому каналу, бд доступна на старом экземпляре. При желании, можно дополнительно заморочиться на бэкапы журналов транзакций и сделать простой ещё меньше.
Ну понятно, что можно и так и этак.
>А тут всё стандартными средствами
Проверил на первой попавшейся базе, sql жмет чуть лучше, и значительно быстрее, чем даже 7zip. И это с файлами базы, которые уже обрезаны.
Другое дело, когда есть счастливчики с 2005 или Express-версиями.
>бд доступна на старом экземпляре.
Но ведь, тогда бэкап перестанет быть актуальным, если пользователи что-то запишут в базу, и эти данные пропадут. Опять-таки в вашем случае, может это и не было критично.

Бэкап в SQL server актуален на момент завершения операции backup database.

Разница в сжатии раром на максимальной компрессии и встроенного сжатия бекапов — менее 10%, а обычно 2-3%.
При том, что сжатый штатными средствами бекап — мгновенно доступен для восстановления, и не требует дополнительного места для декомпрессии.
Зачем делится своим кривым опытом? SQL server все умеет из коробки, а если вы не курсе, то читайте и читайте до просветления.

Великий Гуру, молю, укажите направление! Очень хочу просветления

ms sql server backup в гугле набрать, если не забанен.

нельзя к sql server относится как к обычной СУРБД, это скорее комплекс, в отличие например от разных посгесов и марий, поверьте, там все идет в коробке, а если Вы об этом не знаете, то это не вина продукта, а только ваше незнание, прошу не обижаться. Если бы Вы хоть теорию знали, вы не пошли бы таким путем, а мне лень писать в 2 раза больше, чем Вы накатали. Все поймете с возрастом и опытом.

Вы знаете, подход который я использовал описан одной фразой — бэкап на шару и восстановление с неё стандартными средствами. Всё остальное — это уже "детали". Пожалуйста, потратьте немного своего времени и опишите двумя фразами свой стандартный подход — ведь вы уже написали гораздо больше.

В этом плане гораздо больше нравится подход линукс систем и maridb/mysql. Можно позвать mysqldump, отправить его вывод в gzip, отправить вывод gzip в канал ssh/netcat, на другой стороне принять его и провести обратный процесс. При этом вообще не требуется место под локальное хранение копии базы.

Могу посоветовать интересную (решаемую) задачу. Разверните 3 например экземпляра на одном ипе и одном порту. Вы очень много нового сами для себя узнаете.

работать всё должно начиная с SQL Server 2008 (или 2008 R2, не помню где появилось сжатие бэкапов)
В 2008 сжатие работало только в Enterprise версии, начиная с 2008 R2 оно работает и в версии Standard

При выполнении бэкапа на шару, у учётной записи, под которой запущен SQL Server, должны быть права для записи туда.
Верно, если только учетная запись доменная. Если она локальная, то на шару нужно добавлять доступ для учетки сервера на которой запущен SQL сервер.

За статью, спасибо :)

Когда мне довелось решать такую задачу, мне помог Data Migration Assistant. Утилита скачивается с сайта Microsoft. Все тоже самое: сделать бэкапы и залить на шару, восстановить из бэкапа на целевом сервере. + Переносит логины (с паролями). И при этом ни строчки кода не писал для этого.

тут не про то «как надо», а про то «как можно»
Мы в свое время такие задачи решали через реплики. Создается подписка, вторая база временно в RO и туда льются копии всех транзакций с основной, потом основная стопается, транзакции доливаются, резервная база переводится в RW и на нее переключается приложуха. Минус — сначала делается большой бэкап основной базы, плюс — практически без даунтайма :)
Вы весь процесс переноса в одно окно обслуживания уложили? И сколько приложений эти базы используют?
это dev-стенд. На проде перенос самих баз был бы самой маленькой проблемой
Sign up to leave a comment.

Articles