Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ошибка при чтении данных базы X, при восстановлении базы Y (middle of a restore error)  [new]
FixMix
Member

Откуда:
Сообщений: 4
Господа, подтолкните в каком направлении копать

@@version

Microsoft SQL Server 2012 (SP1) - 11.0.3393.0 (X64)
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Описание процесса.

1. Восстановление базы данных:
RESTORE DATABASE [db01] FROM  DISK = N'Path_to_full_backup' WITH  FILE = 1, NORECOVERY, NOUNLOAD,  REPLACE,  STATS = 5
RESTORE DATABASE [db01] FROM  DISK = N'Path_to_diff_backup' WITH  FILE = 1, NORECOVERY, NOUNLOAD,  REPLACE,  STATS = 5
RESTORE DATABASE [db01] WITH RECOVERY

2. Чтение данных из таблиц восстановленной базы
Select f1, f2 from db01.dbo.table1

3. Обработка полученных данных.


Все запросы, в том числе восстановление, оформлены как динамические и находятся в хранимой процедуре. В качестве параметра передается имя базы данных. Процедура выполняется с определенным интервалом через запуск заданий для нескольких баз данных (db01, db02, db03 и т.д.) в один и тот же момент времени.

Службы SQL Server и SQL Server Agent на данных момент времени запущены под правами пользователя, который является администратором на сервере и SA. База данных по умолчанию для этого пользователя Master.

Описание проблемы.

При выполнении выборки из базы db01
Select f1, f2 from db01.dbo.table1

очень часто получаю ошибку:
Database 'db02' cannot be opened. It is in the middle of a restore.

Собственно непонятно, почему чтению данных из уже восстановленной базы db01 мешает восстановление базы db02, которое к тому же выполняется совсем в другом задании.

Приходится ловить ошибку через try..catch и пробовать читать данные снова и снова (пока база db02 закончит восстановление). Но так как выполнение задания критично по времени (а ждать иногда приходится несколько минут), хотелось бы понять основную причину и устранить.
26 фев 14, 05:58    [15630130]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при чтении данных базы X, при восстановлении базы Y (middle of a restore error)  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Уж не в контексте ли базы db02 запускается выполнение шага задания?
26 фев 14, 06:53    [15630163]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при чтении данных базы X, при восстановлении базы Y (middle of a restore error)  [new]
FixMix
Member

Откуда:
Сообщений: 4
tpg,
Нет, задание запускается в контексте базы DevDB. Это база где расположены все хранимые процедуры. В самой хранимой процедуре также явно указано
USE DevDB
26 фев 14, 20:49    [15635661]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при чтении данных базы X, при восстановлении базы Y (middle of a restore error)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Или db01.dbo.table1 вовсе не table, или ошибка лезет от какого-то другого стейтмента.
26 фев 14, 20:51    [15635675]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при чтении данных базы X, при восстановлении базы Y (middle of a restore error)  [new]
FixMix
Member

Откуда:
Сообщений: 4
Гавриленко Сергей Алексеевич,
Как же понять от какого именно? Table01 это таблица. Все стейтменты в процедуре завязаны либо на db01, либо на DevDB
26 фев 14, 21:11    [15635790]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при чтении данных базы X, при восстановлении базы Y (middle of a restore error)  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
FixMix
задание запускается в контексте базы DevDB. Это база где расположены все хранимые процедуры. В самой хранимой процедуре также явно указано
USE DevDB
Во-первых, внутри процедуры такое возможно только в DSQL. Во-вторых, это лишено смысла, т.к. пользовательская процедура всегда работает в контексте БД в которой она находится.
FixMix
Table01 это таблица
Так table1 или Table01?
Что вернет
select object_id('db01.dbo.<table1 или Table01>', 'U');
?
26 фев 14, 21:48    [15635919]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при чтении данных базы X, при восстановлении базы Y (middle of a restore error)  [new]
FixMix
Member

Откуда:
Сообщений: 4
invm,
Возвращает 341576255
28 фев 14, 02:57    [15643873]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при чтении данных базы X, при восстановлении базы Y (middle of a restore error)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Весь код падающей процедуры покажите.
28 фев 14, 13:38    [15646149]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить