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

create database [Backup] 
on primary( name = N'Backup', filename = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\Backup.mdf', size = 5120KB , filegrowth = 1024KB ), 
 filegroup [Backup_fg] ( name = N'Backup_fg', filename = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\Backup_fg.ndf', size = 5120KB , filegrowth = 1024KB ), 
 filegroup [Backup_fg_readonly] ( name = N'Backup_fg_readonly', filename = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\Backup_fg_readonly.ndf', size = 5120KB , filegrowth = 1024KB )
 log on ( name = N'Backup_log', filename = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\Backup_log.ldf', size = 2048KB , filegrowth = 10%)
go

alter database [backup] set recovery full
go

use [Backup]
go

create table t(id int identity, name char(100)) on [primary]
go
insert into t default values
go 10

create table tw(id int identity, name char(100)) on Backup_fg
go
insert into tw default values
go 10

create table tr(id int identity, name char(100)) on Backup_fg_readonly
go
insert into tr default values
go 10

alter database [Backup] modify filegroup [Backup_fg_readonly] read_only;
go

backup database [backup] to disk = 'C:\test\Backup.bak'
with init
go

backup database [backup] filegroup = 'Backup_fg' to disk = 'C:\test\Backup_fg.bak'
with init
go

backup database [backup] filegroup = 'Backup_fg_readonly' to disk = 'C:\test\Backup_fg_readonly.bak'
with init
go

backup log [backup] to disk = 'C:\test\Backup_log.bak'
with init, no_truncate
go



Затем отключаю базу
alter database [Backup] set offline
with rollback immediate
go


И удаляю файл Backup_fg.ndf

Включаю базу
alter database [Backup] set online
go


И получаю ошибку
Msg 5120, Level 16, State 5, Line 8
Unable to open the physical file "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\Backup_fg.ndf". Operating system error 2: "2(Не удается найти указанный файл.)".
Msg 5181, Level 16, State 5, Line 8
Could not restart database "Backup". Reverting to the previous status.
Msg 5069, Level 16, State 1, Line 8
ALTER DATABASE statement failed.


Затем делаю бэкап tail-log
backup log [backup] to disk = 'C:\test\Backup_tail_log.bak'
with no_truncate, norecovery, init
go



И восстанавливаю файловую группу из бэкапа Backup_fg.bak
restore database [Backup] filegroup = 'Backup_fg' from disk = 'C:\test\Backup_fg.bak'
with norecovery
go


Если использовать для восстановления Backup_tail_log.bak, вылетает ошибка

restore log [Backup] from disk= 'c:\test\Backup_tail_log.bak'
with recovery
go


Msg 4312, Level 16, State 1, Line 19
This log cannot be restored because a gap in the log chain was created. Use more recent data backups to bridge the gap.
Msg 3013, Level 16, State 1, Line 19
RESTORE LOG is terminating abnormally.


Но восстанавливается при использовании бэкапа Backup_log.bak
restore log [Backup] from disk= 'c:\test\Backup_log.bak'
with norecovery
go
restore log [Backup] from disk= 'c:\test\Backup_tail_log.bak'
with recovery
go


Непонятна причина ошибки, кстати ошибка не повторяется без readonly файловой группы
19 мар 16, 19:56    [18953888]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить