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

Откуда:
Сообщений: 8
Добрый день. Сразу оговорюсь, что sql знаю плохо, так что вопрос может показаться простым и глупым), но:
В папку на сервере делается ежедневный бэкап базы, имя каждый раз меняется (ИмяБазы_Дата). Как восстановить базу из "последнего" бэкапа? Т.е. для инструкции RESTORE нужно явно указать имя, я хотелось бы просто ИмяБазы.
16 май 18, 17:35    [21414438]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35507
А если бэкап сделался кем-то или чем-то еще в какую-то папку, то какой последний?
16 май 18, 17:58    [21414534]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5113
в качестве примера для доработки:
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
16 май 18, 18:06    [21414562]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
jonik_joker
Member

Откуда:
Сообщений: 8
Гавриленко Сергей Алексеевич, бэкап делается только в эту папку и только мной.
16 май 18, 18:09    [21414569]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2199
Дедушка,

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

Поэтому было бы идеально сделать цикл, который перебирает имена, для каждого делает RESTORE VERIFYONLY - и для первого же успешного делает рестор :)
16 май 18, 18:24    [21414609]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2199
jonik_joker
Гавриленко Сергей Алексеевич, бэкап делается только в эту папку и только мной.

Но я таки совсем не настаиваю на своей идее. Если только Вами и только в надежное место - и RAID, и ECC оперативная память, и сервер на UPS висит, и Deaf Screen из-за кривых драйверов Вы давно не видели - тогда выложенный выше вариант вполне Вас устроит без дополнительной доработки.
16 май 18, 18:26    [21414618]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2006
Andy_OLAP
И все бы ничего, да вот только автор темы не сделал маааленькое уточнение. Он таки хочет, чтобы рестор прошел из кошерного бэкапа. А не того, который лежал на диске, в нем сектор повредился и теперь контрольная сумма не совпадает.
Ваша способность читать между строк фантазировать меня иногда просто поражает. А еще способность давать развернутые ответы которые не имеют ничего общего с оригинальным вопросом и вообще никак не помогают вопрошающему.

Вы еще забыли вариант когда бэкап делается не в один файл а сразу в несколько. Я прям по нику ТС вижу что у него именно эта ситуация!
16 май 18, 20:20    [21414820]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2006
jonik_joker
Гавриленко Сергей Алексеевич, бэкап делается только в эту папку и только мной.

При таких условиях, и если файлы бэкапов никто не удаляет, то можно еще из истории найти последний бэкап:

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
16 май 18, 20:30    [21414837]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 6437
Почему ТС-ру просто не тиснуть кнопку "Restore Database" в MSSMS???
16 май 18, 20:41    [21414852]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 947
Relic Hunter
Почему ТС-ру просто не тиснуть кнопку "Restore Database" в MSSMS???

Может потому, что автор хочет иметь стейджинг-стенд, на котором каждый день будет разворачиваться актуальная версия с продакшна?
Я ничего не утверждаю, но скрипты обычно для автоматизации используются - предлагать заменить их ручными операциями - это странно.
17 май 18, 09:56    [21415806]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
jonik_joker
Member

Откуда:
Сообщений: 8
Minamoto, в точку
17 май 18, 10:01    [21415834]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
jonik_joker
Member

Откуда:
Сообщений: 8
На основном сервере делается бэкап базы (ИмяБазы_Дата), потом она переносится на другой серв, где должна автоматически развернутся.
17 май 18, 10:04    [21415851]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
invm
Member

Откуда: Москва
Сообщений: 7832
jonik_joker
На основном сервере делается бэкап базы (ИмяБазы_Дата), потом она переносится на другой серв, где должна автоматически развернутся.
Сделайте отдельное задание, которое будет делать бекап с фиксированным именем файла и опцией COPY_ONLY и разворачивать его на целевом сервере.
Не нужно будет искать "последние бекапы".
17 май 18, 11:07    [21416204]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
aleksrov
Member

Откуда:
Сообщений: 811
invm,

Не всегда возможно. Мы тоже через backupset делали, ибо база 2 ТБ, лишние бекапы делаются долго и много весят, даже дифы. А вот для маленьких БД делается именно так, просто еще один с copy_only.
17 май 18, 11:13    [21416236]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
jonik_joker
Member

Откуда:
Сообщений: 8
aleksrov, согласен
17 май 18, 11:28    [21416304]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
aleks222
Member

Откуда:
Сообщений: 169
jonik_joker
На основном сервере делается бэкап базы (ИмяБазы_Дата), потом она переносится на другой серв, где должна автоматически развернутся.


Ну дык, переноси в файл с ОДНИМ И ТЕМ ЖЕ именем.
Чо за проблема?
# копирование последнего бэкапа на тестовый сервер

$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")
 
17 май 18, 11:28    [21416305]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
jonik_joker
Member

Откуда:
Сообщений: 8
короче, копать 21414562
17 май 18, 11:29    [21416311]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2199
Mind
Andy_OLAP
И все бы ничего, да вот только автор темы не сделал маааленькое уточнение. Он таки хочет, чтобы рестор прошел из кошерного бэкапа. А не того, который лежал на диске, в нем сектор повредился и теперь контрольная сумма не совпадает.
Ваша способность читать между строк фантазировать меня иногда просто поражает. А еще способность давать развернутые ответы которые не имеют ничего общего с оригинальным вопросом и вообще никак не помогают вопрошающему.

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


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

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

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

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

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


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

Ну а Вы пробуйте ответить кратко и четко. А я за Вами понаблюдаю.
18 май 18, 14:22    [21420390]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24584
Бинго, вот тдописав 2 строчки в повершелл алексаа222 - вы запросто решите данную задачу.. что еще ? Демагогия на марше
18 май 18, 14:27    [21420406]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2199
Andy_OLAP,

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

Вот ведь - опечатки начались. То ли волнуюсь при одном только упоминании столь ненавистной мне Москвы, полной лимиты и понтов, то ли действительно старческое подступает.
18 май 18, 14:28    [21420410]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
jonik_joker
Member

Откуда:
Сообщений: 8
Уважаемые, задача проще, чем здесь обсуждается: с основного сервера на доп. сервер копируется несколько баз в папку (ИмяБазы_Дата). Далее базы за предыдущий день затираются, т.е. задача сводится ровно к тому чтобы найти в списке баз нужную (т.к. RESTORE нужен цельный путь, а база вида ИмяБазы_Дата) и ее восстановить в базу на доп. сервере. Проверять базы за предыдущий день не нужно, т.к. их просто нет.
18 май 18, 15:28    [21420659]     Ответить | Цитировать Сообщить модератору
 Re: Бэкап базы  [new]
jonik_joker
Member

Откуда:
Сообщений: 8
21416305 как то слишком сложно для меня)
18 май 18, 15:30    [21420670]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить