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

Откуда:
Сообщений: 130
Всем привет. Знаю, что есть куча инструкций, но есть несколько проблем, которые никаким образом не получается решить.
Не получается прописать учётку в службе.
Дано, доменный компьютер для бэкапа и не доменный с SQL server 2014 express.
Пока для тестов делаю штатными средствами через SSMS, в будущем скопирую этот скрипт, и буду гонять его через планировщик по времени.
Можно ли прописать в службе SQL server пользователя, которого нет на этом компьютере (т.е. пользователя компьютера, куда делается копия)? Пробовал прописывать учётку доменного и локального типа, пишет не правильные данные. Думаю албанский вопрос, но вдруг я что-то недопонимаю и это можно сделать.
30 авг 19, 06:24    [21960220]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
uaggster
Member

Откуда:
Сообщений: 768
У тебя ж экспресс!
В Экспрессе - нет агента.
Значит, бэкап придется делать из виндового шедулера.
Заведи на обеих компах локального пользователя с одним и тем же именем, и одним и тем же паролем.
Разреши ntlm аутентификацию в домене и на компе. Она по умолчанию до сих пор, вроде, разрешена, так что просто проверь, не отключена ли политикой.
В MSSQLSERVER сделай этого пользователя - пользователем с членством в db_backupoperator на базах, бэкап которых хочешь делать.
Напиши скрипт для бэкапа БД, ну, или сгенерируй его с помощью ssms.
Напиши батник, в котором будет вызываться sqlcmd с этим самым файлом скрипта, как входящим файлом.
Пропиши в системном шедулере вызов батника, с нужной тебе периодичностью, от имени того самого локального пользователя.
И лучше не делай бэкап непосредственно в сеть.
Делай бэкап рядом, потом - restore verifyonly, потом посчитай md5 файла, это легко делается командой powershell, потом скопируй файл в сеть и еще раз посчитай md5, и сравни их.
Т.к. база у тебя наверняка - копеечная, с объемом бэкапа меньше 10-15 Гб, всё это - быстро, в час уложишься.
30 авг 19, 07:00    [21960224]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
Никита А
Member

Откуда:
Сообщений: 130
uaggster
В Экспрессе - нет агента.

Агент есть, но его нельзя запустить

uaggster
виндового шедулера

Я и про него имел ввиду, под словом планировщик

uaggster
Заведи на обеих компах локального пользователя с одним и тем же именем, и одним и тем же паролем.

В принципе, так и думал

uaggster
Напиши скрипт для бэкапа БД

А что прописать надо в t-sql, чтобы хранились копии только за 2 недели?
30 авг 19, 08:08    [21960240]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
Никита А
Member

Откуда:
Сообщений: 130
uaggster
Делай бэкап рядом, потом - restore verifyonly, потом посчитай md5 файла, это легко делается командой powershell, потом скопируй файл в сеть и еще раз посчитай md5, и сравни их.
Т.к. база у тебя наверняка - копеечная, с объемом бэкапа меньше 10-15 Гб, всё это - быстро, в час уложишься.

Я вижу так, создаётся бекап и txt файл с хэш-суммой, выдерживается пауза с запасом, только потом копируется и сверяется скопируемая копию хеша с текстовым файлом?
30 авг 19, 08:30    [21960245]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 744
Никита А,
Не надо с текстовым фалом, и паузу искусственную выдерживать нет необходимости.
В скрипте команды исполнятся последовательно:
1) вначале при помощи PowerShell: $Local_Hash = Get-FileHash %local_path% -Algorithm MD5
2) В том же скрипте сделай перенос файла с локального хранения в сетевое
3) строчкой ниже - снова $Network_Hash = Get-FileHash %network_path% -Algorithm MD5
4) Сравни переменные $Local_Hash и $Network_Hash и, если они равны - то выход из программы, иначе - какой-нибудь алёрт или повтор операций

Лучше делать всегда составные джобы, где порядок операций предсказуем, зависим, можно настраивать некоторую логику условия что-ли. Выдерживать искусственную паузу - можно на этом пролететь так или иначе, если будет, к примеру, задержки в сети
30 авг 19, 08:54    [21960258]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Никита А
А что прописать надо в t-sql, чтобы хранились копии только за 2 недели?

Это не в t-sql надо прописать, а в cmd - можно погуглить удаление файлов старше определенного времени и доработать для себя.

Ну или в PowerShell.
30 авг 19, 09:21    [21960277]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
Никита А
Member

Откуда:
Сообщений: 130
PsyMisha
Не надо с текстовым фалом, и паузу искусственную выдерживать нет необходимости.
В скрипте команды исполнятся последовательно:
1) вначале при помощи PowerShell: $Local_Hash = Get-FileHash %local_path% -Algorithm MD5
2) В том же скрипте сделай перенос файла с локального хранения в сетевое
3) строчкой ниже - снова $Network_Hash = Get-FileHash %network_path% -Algorithm MD5
4) Сравни переменные $Local_Hash и $Network_Hash и, если они равны - то выход из программы, иначе - какой-нибудь алёрт или повтор операций

Лучше делать всегда составные джобы, где порядок операций предсказуем, зависим, можно настраивать некоторую логику условия что-ли. Выдерживать искусственную паузу - можно на этом пролететь так или иначе, если будет, к примеру, задержки в сети


Спасибо, уже в скором буду пробовать, отпишусь
30 авг 19, 09:43    [21960292]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 744
Никита А,

Ок, удачи

Кстати - есть еще способ хороший, когда нужна гарантированная проверка целостности - вместо обычных команд копирования в скрипте - использовать встроенную утилиту bitsadmin.exe
у нее несложный синтаксис, который можно использовать хоть в батнике, хоть в PS, но она копирует через специальную службу с гарантией доставки, если произошел сбой в сетевой операции, даже если удаленная машина выключится - эта утилита будет ждать и предпринимать попытки без остановки операции. Максимально ответственная тулза, в общем
Тогда и про MD5 можно не заморачиваться
30 авг 19, 09:52    [21960297]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
uaggster
Member

Откуда:
Сообщений: 768
PsyMisha
Тогда и про MD5 можно не заморачиваться

У меня как то полка файлы била.
Не всегда, изредка.
С тех пор - обязательно сравниваю md5 записываемого и md5 поднятого. И храню их.
Хорошо хоть бэкапы небольшие, до 200 Гб.
30 авг 19, 10:00    [21960303]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап баз в сеть  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4101
uaggster
У тебя ж экспресс!
В Экспрессе - нет агента.
Значит, бэкап придется делать из виндового шедулера.
Заведи на обеих компах локального пользователя с одним и тем же именем, и одним и тем же паролем.
Разреши ntlm аутентификацию в домене и на компе. Она по умолчанию до сих пор, вроде, разрешена, так что просто проверь, не отключена ли политикой.
В MSSQLSERVER сделай этого пользователя - пользователем с членством в db_backupoperator на базах, бэкап которых хочешь делать.
Напиши скрипт для бэкапа БД, ну, или сгенерируй его с помощью ssms.
Напиши батник, в котором будет вызываться sqlcmd с этим самым файлом скрипта, как входящим файлом.
Пропиши в системном шедулере вызов батника, с нужной тебе периодичностью, от имени того самого локального пользователя.
И лучше не делай бэкап непосредственно в сеть.
Делай бэкап рядом, потом - restore verifyonly, потом посчитай md5 файла, это легко делается командой powershell, потом скопируй файл в сеть и еще раз посчитай md5, и сравни их.
Т.к. база у тебя наверняка - копеечная, с объемом бэкапа меньше 10-15 Гб, всё это - быстро, в час уложишься.

Все правильно написано. А для копирования лучше использовать виндовую robocopy.exe.
Надежнее для копирования больших файлов.
Мы таскаем по сети 400 гиг с её помощью.
30 авг 19, 10:06    [21960311]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить