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

Откуда:
Сообщений: 122
Кратко:
БД восстановлена из цепочки бэкапов с параметром STOPAT. Я не знаю на какой момент времени БД восстановлена.
Можно ли штатными средствами узнать на какой момент времени восстановлена БД?
20 мар 12, 15:54    [12282215]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать на какой момент времени восстановлена БД?  [new]
komrad
Member

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

если это сиквел 2005 и включен default trace, то можно получить историю команд на бекап/восстановление в отношении нужной БД

-- взять путь к трейс-файлу - см. последний столбец
select value from ::fn_trace_getinfo(default) where traceid=1 and property=2

-- получить список backup/restore событий
-- заменить  ПУТЬ_ВСТАВИТЬ_СЮДА  &  БАЗА на свои значения

SELECT	top 100
		te.name, 
		t.LoginName,
		t.DatabaseName, 
		t.FileName, 
		t.StartTime, 
		dateadd(ms,t.Duration/1000,t.StartTime) [FinishTime],
		t.ApplicationName ,
		t.ObjectID,
        t.Duration/1000/1000 [Duration (s)],
	t.TextData
FROM fn_trace_gettable('ПУТЬ_ВСТАВИТЬ_СЮДА', NULL) AS t 
INNER JOIN sys.trace_events AS te ON t.EventClass = te.trace_event_id 
WHERE 
te.name LIKE '%Backup%' and 
t.DatabaseName='БАЗА'
ORDER BY StartTime desc
20 мар 12, 16:00    [12282276]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать на какой момент времени восстановлена БД?  [new]
emperor_bms
Member

Откуда:
Сообщений: 122
komrad, спасибо!

Сделал по-другому, просто открыл профайлером один из трейсов и там поискал по полю TextData. Нашел.

Возник вопрос, а как рулить количеством, размером и временем хранения default трейсов?
20 мар 12, 16:12    [12282381]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать на какой момент времени восстановлена БД?  [new]
komrad
Member

Откуда:
Сообщений: 5738
emperor_bms
komrad, спасибо!

Сделал по-другому, просто открыл профайлером один из трейсов и там поискал по полю TextData. Нашел.

Возник вопрос, а как рулить количеством, размером и временем хранения default трейсов?


5 файлов по 20 МБ, и, похоже, не меняется
номера идут по возрастанию, старый шестой удаляется

много интересного про default trace


PS хотя, наверно, в реестре наверно где-то есть
20 мар 12, 16:33    [12282605]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать на какой момент времени восстановлена БД?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
еще вариант - настроить ведение файлов errorlog за, скажем, 30 дней
в 00-00 поставить вызов sp_cycle_errorlog
будет по 1 файлу на 1 день (если не будет лишних рестартов)
а там бакапы / ресторы есть
20 мар 12, 16:38    [12282642]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать на какой момент времени восстановлена БД?  [new]
komrad
Member

Откуда:
Сообщений: 5738
emperor_bms
Возник вопрос, а как рулить количеством, размером и временем хранения default трейсов?

У нас эти файлы бекапятся раз в сутки корпоративным бекапом.
Поэтому поднять что-нить из архива проблемы не составляет.
20 мар 12, 16:46    [12282729]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать на какой момент времени восстановлена БД?  [new]
emperor_bms
Member

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

У нас так и сделано, однако стоит заметить, что кроме того, что "DB/log was backed up/restored" и времени, больше инфы там нет. Посему в данном случае еррорлог не очень информативен.


komrad,

Думаю настроить копирование или переименование (и удаление по прошествии периода) этих файлов средствами SQL, обернуть в SP и засунуть в джобу которая делает errorlog cycle. Жаль только нельзя сделать так, чтобы они кореллировали. Была бы какая-нибудь процедура типа sp_default_trace_cycle... :) было б удобнее...
21 мар 12, 12:26    [12286927]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать на какой момент времени восстановлена БД?  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
emperor_bms,

Попробуйте совместить информацию из этого:

RESTORE HEADERONLY
DBCC LOGINFO(...)
DBCC LOG(...)
DBCC OPENTRAN
sys.fn_dblog(null,null)
msdb.dbo.backupset
master.dbo.sysdatabases
21 мар 12, 12:38    [12287041]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить