Я нашел решение, и я собираюсь отправить его здесь в случае, если кто-либо еще ищет это в будущем. Я не могу сказать, что это - лучший способ сделать это, но это работало на меня и было относительно безболезненным. Я также раскрою впереди, что создал новые схемы в основной базе данных, когда я сначала задал этот вопрос (неделя или два назад), таким образом, я честно не знаю, необходим ли этот шаг.
Я повторил эту процедуру каждой базы данных.
Созданный уникальное название схемы базы данных.
Выполнил следующий запрос для каждой таблицы в базе данных:
ALTER SCHEMA [new_schema_name] TRANSFER [table_name];
Используемый SSMS для генерации CREATE
сценарии для всех представлений, хранимые процедуры, триггеры и функции. (К счастью, у меня были немногие из них, таким образом, это пошло быстро.) Я действительно должен был добавить название схемы ко всей таблице refereces (например. [dbo].[table_name]
измененный на [new_schema_name].[table_name]
но поиск и замена сделали это быстрым и легким.
Используемый Импорт SQL Server и Мастер Экспорта для экспортирования таблицы от базы данных до основной базы данных.
Работал CREATE
сценарии и удаленный старая база данных.
При помещении PID сценария в файл блокировки затем если файл блокировки существует, когда новый экземпляр запускается, можно считать PID и проверить, работает ли сценарий все еще. Если сценарий не работает, затем моются, помещают PID текущего экземпляра в файле блокировки и запускаются, rsync иначе печатают 'все еще выполняющий' сообщение и выход.
Править:
#!/bin/bash
backup() {
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/Users/admin/Documents/Backup/rsync-key
RUSER=philosophy
RHOST=example.com
RPATH=data/
LPATH="/Volumes/G Technology G Speed eS/Backup"
$RSYNC -avz --delete --progress -e "$SSH -i $KEY" "$LPATH" $RUSER@$RHOST:$RPATH
}
LOCKFILE=/Users/admin/Documents/backup.isrunning
if [ ! -e "$LOCKFILE" ]
then
echo $$ >"$LOCKFILE"
backup
else
PID=$(cat "$LOCKFILE")
if kill -0 "$PID" >&/dev/null
then
echo "Rsync - Backup still running"
exit 0
else
echo $$ >"$LOCKFILE"
echo "Warning: previous backup appears not to have finished correctly"
backup
fi
fi
rm -f "$LOCKFILE"
Если вы настраиваете несколько резервных копий, вы можете взглянуть на LBackup , который предлагает блокировку, а также полностью поддерживает резервное копирование по запросу. Дополнительную информацию о преимуществах резервного копирования по запросу можно получить по следующему URL-адресу: http://www.lbackup.org/network_backup_strategies
Если вы проверите исходный код LBackup, вы увидите, как реализована система блокировки с использованием ловушка. Вышеупомянутое предложение относительно использования PID также является хорошей идеей. При таком подходе, если весь сервер выйдет из строя и ловушка не будет активирована.