Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Бэкап базы / 22 сообщений из 22, страница 1 из 1
16.05.2018, 17:35
    #39645701
jonik_joker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Добрый день. Сразу оговорюсь, что sql знаю плохо, так что вопрос может показаться простым и глупым), но:
В папку на сервере делается ежедневный бэкап базы, имя каждый раз меняется (ИмяБазы_Дата). Как восстановить базу из "последнего" бэкапа? Т.е. для инструкции RESTORE нужно явно указать имя, я хотелось бы просто ИмяБазы.
...
Рейтинг: 0 / 0
16.05.2018, 17:58
    #39645713
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
А если бэкап сделался кем-то или чем-то еще в какую-то папку, то какой последний?
...
Рейтинг: 0 / 0
16.05.2018, 18:06
    #39645719
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
в качестве примера для доработки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare
	@db_name nvarchar(100) = 'YourDbName',
	@path nvarchar(100) = 'C:\temp\YourFolder',
	@sql nvarchar(1000), 
	@last nvarchar(100)

declare @files table (fname nvarchar(100), d tinyint, f tinyint)

insert @files exec master.dbo.xp_dirtree @path, 1, 1

select @last = max(fname) from @files

select @sql = 'restore databese ' + @db_name + ' from disk = ''' + @path + '\' + @last + ''' recovery'

select @sql
...
Рейтинг: 0 / 0
16.05.2018, 18:09
    #39645720
jonik_joker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Гавриленко Сергей Алексеевич, бэкап делается только в эту папку и только мной.
...
Рейтинг: 0 / 0
16.05.2018, 18:24
    #39645725
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Дедушка,

И все бы ничего, да вот только автор темы не сделал маааленькое уточнение. Он таки хочет, чтобы рестор прошел из кошерного бэкапа. А не того, который лежал на диске, в нем сектор повредился и теперь контрольная сумма не совпадает.

Поэтому было бы идеально сделать цикл, который перебирает имена, для каждого делает RESTORE VERIFYONLY - и для первого же успешного делает рестор :)
...
Рейтинг: 0 / 0
16.05.2018, 18:26
    #39645726
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
jonik_jokerГавриленко Сергей Алексеевич, бэкап делается только в эту папку и только мной.
Но я таки совсем не настаиваю на своей идее. Если только Вами и только в надежное место - и RAID, и ECC оперативная память, и сервер на UPS висит, и Deaf Screen из-за кривых драйверов Вы давно не видели - тогда выложенный выше вариант вполне Вас устроит без дополнительной доработки.
...
Рейтинг: 0 / 0
16.05.2018, 20:20
    #39645770
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Andy_OLAPИ все бы ничего, да вот только автор темы не сделал маааленькое уточнение. Он таки хочет, чтобы рестор прошел из кошерного бэкапа. А не того, который лежал на диске, в нем сектор повредился и теперь контрольная сумма не совпадает.
Ваша способность читать между строк фантазировать меня иногда просто поражает. А еще способность давать развернутые ответы которые не имеют ничего общего с оригинальным вопросом и вообще никак не помогают вопрошающему.

Вы еще забыли вариант когда бэкап делается не в один файл а сразу в несколько. Я прям по нику ТС вижу что у него именно эта ситуация!
...
Рейтинг: 0 / 0
16.05.2018, 20:30
    #39645776
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
jonik_jokerГавриленко Сергей Алексеевич, бэкап делается только в эту папку и только мной.
При таких условиях, и если файлы бэкапов никто не удаляет, то можно еще из истории найти последний бэкап:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
DECLARE	@db_name nvarchar(100) = 'YourDbName'

SELECT TOP 1 m.physical_device_name, s.backup_finish_date
FROM msdb.dbo.backupset s
  INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE s.database_name = @db_name
  AND s.[type] = 'D'
  AND s.is_snapshot = 0
ORDER BY s.backup_finish_date DESC
...
Рейтинг: 0 / 0
16.05.2018, 20:41
    #39645779
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Почему ТС-ру просто не тиснуть кнопку "Restore Database" в MSSMS???
...
Рейтинг: 0 / 0
17.05.2018, 09:56
    #39645897
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Relic HunterПочему ТС-ру просто не тиснуть кнопку "Restore Database" в MSSMS???
Может потому, что автор хочет иметь стейджинг-стенд, на котором каждый день будет разворачиваться актуальная версия с продакшна?
Я ничего не утверждаю, но скрипты обычно для автоматизации используются - предлагать заменить их ручными операциями - это странно.
...
Рейтинг: 0 / 0
17.05.2018, 10:01
    #39645898
jonik_joker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Minamoto, в точку
...
Рейтинг: 0 / 0
17.05.2018, 10:04
    #39645901
jonik_joker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
На основном сервере делается бэкап базы (ИмяБазы_Дата), потом она переносится на другой серв, где должна автоматически развернутся.
...
Рейтинг: 0 / 0
17.05.2018, 11:07
    #39645955
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
jonik_jokerНа основном сервере делается бэкап базы (ИмяБазы_Дата), потом она переносится на другой серв, где должна автоматически развернутся.Сделайте отдельное задание, которое будет делать бекап с фиксированным именем файла и опцией COPY_ONLY и разворачивать его на целевом сервере.
Не нужно будет искать "последние бекапы".
...
Рейтинг: 0 / 0
17.05.2018, 11:13
    #39645965
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
invm,

Не всегда возможно. Мы тоже через backupset делали, ибо база 2 ТБ, лишние бекапы делаются долго и много весят, даже дифы. А вот для маленьких БД делается именно так, просто еще один с copy_only.
...
Рейтинг: 0 / 0
17.05.2018, 11:28
    #39645975
jonik_joker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
aleksrov, согласен
...
Рейтинг: 0 / 0
17.05.2018, 11:28
    #39645976
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
jonik_jokerНа основном сервере делается бэкап базы (ИмяБазы_Дата), потом она переносится на другой серв, где должна автоматически развернутся.

Ну дык, переноси в файл с ОДНИМ И ТЕМ ЖЕ именем.
Чо за проблема?
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
# копирование последнего бэкапа на тестовый сервер

$secpasswd = ConvertTo-SecureString "egh^%73Jkfdk" -AsPlainText -Force
$Creds = New-Object System.Management.Automation.PSCredential ("vtSERVER\backupCopy", $secpasswd)

Try{ Remove-PSDrive -Name "ForBackupCopy" } catch { }

if ( Get-PSSession ) { Remove-PSSession -Session (Get-PSSession) }

$dst_path = "\\vtserver\Backups"
$src_path = "H:\Backups\Main\Avalon2009"

New-PSDrive -Name "ForBackupCopy" -PSProvider "FileSystem" -Root $dst_path -Credential $Creds

get-childitem -path $src_path -Filter "Avalon2009_backup?*.bak"| 
    where-object { -not $_.PSIsContainer } | 
    sort-object -Property $_.CreationTime  | 
    select-object -last 1 | 
    copy-item -Destination (join-path $dst_path "AvalonLast.BAK")
 
...
Рейтинг: 0 / 0
17.05.2018, 11:29
    #39645978
jonik_joker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
короче, копать 21414562
...
Рейтинг: 0 / 0
18.05.2018, 14:22
    #39646730
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
MindAndy_OLAPИ все бы ничего, да вот только автор темы не сделал маааленькое уточнение. Он таки хочет, чтобы рестор прошел из кошерного бэкапа. А не того, который лежал на диске, в нем сектор повредился и теперь контрольная сумма не совпадает.
Ваша способность читать между строк фантазировать меня иногда просто поражает. А еще способность давать развернутые ответы которые не имеют ничего общего с оригинальным вопросом и вообще никак не помогают вопрошающему.

Вы еще забыли вариант когда бэкап делается не в один файл а сразу в несколько. Я прям по нику ТС вижу что у него именно эта ситуация!

Я пожалуй таки напишу достаточно развернутый ответ.

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

В чем вопрос автора темы? Он хочет восстановить базу из последнего бэкапа. Понимаете, в чем цимес? Не НАЙТИ последний бэкап, а ВОССТАНОВИТЬ. А бэкап считается КУЧЕЙ МУСОРА, которая запорота из-за сбойных секторов до тех пор, пока не отработает успешный рестор.

Отсюда следует такой неожиданный вывод - автору темы ОБЯЗАТЕЛЬНО нужен скрипт, который он натравит на каталог и получит "нашел файл от 10 мая, рестор не удался, нашел файл от 8 мая. рестор не удался, нашел файл от 2 мая, рестор удался". И он помимо ресторнутой базы из копии от 2 мая поймет, что все файлы между 2 и 10 мая у него БИТЫЕ.

И когда жареный петух клюкнет кое-кого кое-куда - выяснится, что информацию о битых бэкапах автор темы уже получал, но пропустил мимо ушей, не подняв тревогу и не заорав на весь отдел "кто отвечает за железо?!!! у нас бэкапа после 2 мая все битые! Караул! Тревога!"


Вот теперь понятно, почему я в те моменты, когда не провожу психологические тесты на участниках форума из стран СНГ (за исключением Лениграда, Свердловска, Новосибирска и ряда других городов), стараюсь не просто ответить на вопрос, но дать подробный ответ на тот вопрос, который еще неявно крутится в голове у автора очередной темы.

Ну а Вы пробуйте ответить кратко и четко. А я за Вами понаблюдаю.
...
Рейтинг: 0 / 0
18.05.2018, 14:27
    #39646732
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Бинго, вот тдописав 2 строчки в повершелл алексаа222 - вы запросто решите данную задачу.. что еще ? Демагогия на марше
...
Рейтинг: 0 / 0
18.05.2018, 14:28
    #39646733
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Andy_OLAP,

за исключением Ленинграда, конечно же.

Вот ведь - опечатки начались. То ли волнуюсь при одном только упоминании столь ненавистной мне Москвы, полной лимиты и понтов, то ли действительно старческое подступает.
...
Рейтинг: 0 / 0
18.05.2018, 15:28
    #39646772
jonik_joker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
Уважаемые, задача проще, чем здесь обсуждается: с основного сервера на доп. сервер копируется несколько баз в папку (ИмяБазы_Дата). Далее базы за предыдущий день затираются, т.е. задача сводится ровно к тому чтобы найти в списке баз нужную (т.к. RESTORE нужен цельный путь, а база вида ИмяБазы_Дата) и ее восстановить в базу на доп. сервере. Проверять базы за предыдущий день не нужно, т.к. их просто нет.
...
Рейтинг: 0 / 0
18.05.2018, 15:30
    #39646775
jonik_joker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Бэкап базы
21416305 как то слишком сложно для меня)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Бэкап базы / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]