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

Откуда:
Сообщений: 7
Прошу, помогите советом.
Ситуация следующая: у базы было 4 файла, пара файлов строк, пара журналов транзакций. Я удалил один файл строк и один файл журнала, предварительно перенеся данные и сжав файл транзакций. Файлы удалились нормально. Но теперь после резервного копирования базы и при попытке восстановить базу в окне Managment Studio появляется третий файл (файл строк), который удаленный. В истории тоже по три файла на каждый набор резервного копирования.
SELECT * FROM [msdb].[dbo].[backupfile] where backup_set_id = '43188'

backup_set_id;	logical_name;	physical_name;			is_readonly;	is_present
43188; Data; F:\MSSQL_Data\Data.mdf; 0; 1
43188; Log; E:\MSSQL_Trans\Log.ldf; 0; 1
43188; Data_bis; G:\MSSQL_Data\Data_bis.ndf; 0; 0

Полный результат в приложении 111.csv
При выборе непосредственно файла бекапа как устройства все нормально.
Где хранится упоминание о третьем файле и как можно убрать файл Data_bis из описания базы? Физически на диске и в свойствах базы его нет.

К сообщению приложен файл (111.csv - 971bytes) cкачать
13 ноя 17, 09:15    [20947990]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30702
abjurer
Но теперь после резервного копирования базы и при попытке восстановить базу в окне Managment Studio появляется третий файл (файл строк), который удаленный. В истории тоже по три файла на каждый набор резервного копирования.
А что в файле бакапа?
RESTORE FILELISTONLY
Может, вы не тот бакап смотрите? Или студия показывает содержимое старых бакапов, предполагая восстановление на старую дату, когда файл ещё был?
Вообще непонятно, что там нажимается в студии, лучше для начала посмотреть командами.
13 ноя 17, 10:52    [20948346]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
abjurer
Member

Откуда:
Сообщений: 7
RESTORE FILELISTONLY FROM DISK = N'G:\BackupSQL\full_copy 2017-11-13 08-18-43.bak'


Data;F:\MSSQL_Data\Data.mdf;D;PRIMARY;126055612416;35184372080640;1;0;0;00000000-0000-0000-0000-000000000000;0;0;115629424640;512;1;NULL;316583000003803400039;1CAA9B25-E706-4146-980C-7C449231B66A;0;1;NULL
Log;E:\MSSQL_Trans\Log.ldf;L;NULL;1098907648;35184372080640;2;0;0;00000000-0000-0000-0000-000000000000;0;0;0;512;0;NULL;0;00000000-0000-0000-0000-000000000000;0;1;NULL

Если выбирать файл полного бекапа как устройство, с которого восстанавливают, то все ок, два файла. Если в окошке студии выбрать восстановление не из устройства, а из БД, то на второй закладке - три файла.
Если подскажите какими командами что посмотреть или в какую сторону копать, буду признателен.
13 ноя 17, 11:18    [20948482]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
alexeyvg
Может, вы не тот бакап смотрите?

он смотрит тот бэкап.
есть такое дело, бэкап "помнит" этот файл, хотя, если посмотрите на колонку is_present,
там 0, т.е. самого файла все же нет.
вот тут обсуждалось:
Dropped FileGroup/Files still show up in Sys.Master_Files and MSDB.dbo.backupfile
13 ноя 17, 11:20    [20948493]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
abjurer
Member

Откуда:
Сообщений: 7
Yash123, cпасибо за ссылку. Я не полиглот, но, насколько я понял тему в msdn, у кого-то получается избавится от "левых" файлов, у кого-то нет. Четкого рецепта нет. Только информация к размышлению.
Кстати, по запросу
select * from sys.master_files where physical_name like 'G:\%'

мне выдается правильный результат: 4 файла, которые физически есть на этом разделе и используются в других базах. Data_bis.ndf, который мешается в бекапах, отсутствует.
13 ноя 17, 11:43    [20948636]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
у вас какая модель?
там вроде пришли к выводу, что после бэкапа лога уходит,
только в истории бэкапов остается
13 ноя 17, 12:29    [20948857]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30702
abjurer
Если выбирать файл полного бекапа как устройство, с которого восстанавливают, то все ок, два файла. Если в окошке студии выбрать восстановление не из устройства, а из БД, то на второй закладке - три файла.
А, я то думал, что вы выбираете именно файл бакапа как устройство.
Что, просто глюк студии, по идее, она должна показывать такое количество файлов, которое правильное на момент восстановления.
abjurer
Если подскажите какими командами что посмотреть или в какую сторону копать, буду признателен.
Я вообще не понимаю, зачем это нужно, восстанавливать "из базы"?
Восстановление - штука черезвычайная, лучше восстанавливать "из файла бакапа", ещё лучше - получив из студии скрипт, и просмотрев его.
А если это восстановление типа "прод на дев", то его удобнее делать заранее написанным скриптом, может быть, положенным в джоб.
13 ноя 17, 12:31    [20948867]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
abjurer
Member

Откуда:
Сообщений: 7
Yasha123, у меня полная модель. Не уходит ни после полного бекапа, ни после бекапа лога. Я даже удалил эти лишние строки из [msdb].[dbo].[backupfile] после полного бекапа. Но после бекапа лога опять этот файл там начал светиться. Причина где-то в другом. Может быть решилось перезагрузкой всего сервера, но делать я этого в течение дня не могу, только поздно вечером.
13 ноя 17, 13:15    [20949150]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
abjurer
Member

Откуда:
Сообщений: 7
alexeyvg
А, я то думал, что вы выбираете именно файл бакапа как устройство.
Что, просто глюк студии, по идее, она должна показывать такое количество файлов, которое правильное на момент восстановления.

Попробовал на других машинах, тот же глюк. Или студии сошли с ума одновременно, или проблема где-то на сервере.
alexeyvg
Я вообще не понимаю, зачем это нужно, восстанавливать "из базы"?
Восстановление - штука черезвычайная, лучше восстанавливать "из файла бакапа", ещё лучше - получив из студии скрипт, и просмотрев его.
А если это восстановление типа "прод на дев", то его удобнее делать заранее написанным скриптом, может быть, положенным в джоб.

Да, типа "прод на дев". Но файлы именуются по времени, т.е. у каждого уникальное имя N'G:\BackupSQL\log_copy 2017-11-13 09-40-00.bak', а я не настолько хорошо знаю T-SQL, чтобы писать на нем что-то большее двух-трехшаговых скриптов. Да и восстановление иногда нужно не из текущего набора, а из архива месячной или полугодичной давности, причем с точностью до получаса. Но это уже лирика.

В общем, я так понимаю пока нет идей, где хранится набор этих файлов и как этот набор почистить от ненужного? :(
13 ноя 17, 13:28    [20949239]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
abjurer
В общем, я так понимаю пока нет идей, где хранится набор этих файлов и как этот набор почистить от ненужного? :(

так в header-е же и хранится.
у каждого бэкапа есть header, и что туда записывают, то вам и показывают.
еще и в backupset дублируют,
но если вы его (nsdb..backupset) и чистите, на файлах бэкапа это не сказывается.
а сервер будет продолжать его туда писать, пока ему надо.
зачем надо, кто бы знал.
товарищи в топике пришли к выводу, что надо для последующего бэкапа лога.
13 ноя 17, 13:34    [20949274]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
abjurer
Member

Откуда:
Сообщений: 7
Yasha123
так в header-е же и хранится.
у каждого бэкапа есть header, и что туда записывают, то вам и показывают.
еще и в backupset дублируют,
но если вы его (nsdb..backupset) и чистите, на файлах бэкапа это не сказывается.
а сервер будет продолжать его туда писать, пока ему надо.
зачем надо, кто бы знал.
товарищи в топике пришли к выводу, что надо для последующего бэкапа лога.


Да, увидел в самом теле файла бэкапа строки с именами файлов. И даже готов принять, что это надо для последующего бекапа лога. Но что же делать, если мне уже не надо? :) Как удалить эту заразу?

Т.е. данные о третьем файле пишутся в лог, дублируются в backupset и backupfile. Чистка истории процедурой sp_delete_backuphistory убирает следствие. А откуда берутся данные о файлах базы в заголовки бекапа?
13 ноя 17, 15:30    [20949847]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
abjurer
А откуда берутся данные о файлах базы в заголовки бекапа?

из базы и берутся.
бывают файловые бэкапы,
файлы базы в них все равно *все* перечислены,
а те файлы, что на самом деле присутствует в бэкапе,
отмечены единицей в колонке is_present.
a вот почему он все еще считает, что удаленный файл по-прежнему часть базы, не знаю
13 ноя 17, 16:25    [20950079]     Ответить | Цитировать Сообщить модератору
 Re: Список файлов при восстановлении базы  [new]
abjurer
Member

Откуда:
Сообщений: 7
Yasha123, понятно, что ничего не понятно. Спасибо за участи и помощь. Буду дальше ковыряться.
13 ноя 17, 21:55    [20950938]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить