Форум системных администраторов

IT => Software => СУБД => Тема начата: Triangle от 02 ноября 2018, 11:40:49

Название: Глюк SQL 2008
Отправлено: Triangle от 02 ноября 2018, 11:40:49
Смотрите какая забавная штука поймалась.

Были базы bp unf ut2014 zup, и ещё две fdata и gdata

Эти две даты fdata и gdata были переведены в автономный режим и вообще потом удалены.

И перестал работать план бэкапа... Падает и всё... смотрите журналы...
Смотрим...

И видим там в выполняемом коде на котором всё падает
USE [bp]
GO
DBCC CHECKDB(N''bp'')  WITH NO_INFOMSGS

GO
USE [fdata]
GO
DBCC CHECKDB(N''fdata'')  WITH NO_INFOMSGS

GO
USE [gdata]
GO
DBCC CHECKDB(N''gdata'')  WITH NO_INFOMSGS

GO
USE [unf]
GO
DBCC CHECKDB(N''unf'')  WITH NO_INFOMSGS

GO
USE [ut2014]
GO
DBCC CHECKDB(N''ut2014'')  WITH NO_INFOMSGS

И падает оно на том что
Сбой выполнения запроса "USE [fdata]
" со следующей ошибкой: "Не удалось открыть базу данных "fdata", поскольку она в автономном режиме.". Возможные причины сбоя: проблемы с этим запросом, свойство "ResultSet" установлено неправильно, параметры установлены неправильно или соединение было установлено неправильно.


Смотрим в код плана, который должен выполняться...


USE [bp]
GO
DBCC CHECKDB(N'bp')  WITH NO_INFOMSGS
GO
USE [unf]
GO
DBCC CHECKDB(N'unf')  WITH NO_INFOMSGS
GO
USE [ut2014]
GO
DBCC CHECKDB(N'ut2014')  WITH NO_INFOMSGS
GO
USE [zup]
GO
DBCC CHECKDB(N'zup')  WITH NO_INFOMSGS

 %)

wtf.

Я конечно могу сделать новое задание... но wtf.


Updated: 02 November 2018, 12:10:48

Тупо создал всё заново, тестировать пока не буду, вечером, народу в базе все кто есть.
Название: Глюк SQL 2008
Отправлено: Opium от 15 ноября 2018, 09:26:51
что такое "автономный режим" в данном контексте?
кстати, вот это вот "USE [zup]" можно не указывать, всё будет выполняться в контексте внутреннего снапшота БД
тоесть
use master/use tempdb/use <что угодно>
GO
DBCC CHECKDB(N'gdata')  WITH NO_INFOMSGS
Название: Глюк SQL 2008
Отправлено: Triangle от 15 ноября 2018, 12:55:48
Ну то и значит, базы стали не нужны, но пока не убивал и перевел в автономный режим, с этого момента прям сразу процедура и перестала выполняться, а я начал  сравнивать код T-SQL отображавшийся в задаче, впрочем в графическом интерфейсе эти две автономных базы тоже не отображались, но при просмотре ошибки отображалось что код выполняется с учетом этих баз.

Для себя сделал вывод что делать общий план для нескольких баз не самое лучшее решение, или ну как минимум план пусть будет общий, но для каждой базы напилить отдельные сабпланы.
Название: Глюк SQL 2008
Отправлено: Opium от 15 ноября 2018, 14:19:12
дык что такое "автономный режим"?
ты базы в офлайн положил
или через
ALTER DATABASE [test] SET CONTAINMENT
?
Название: Глюк SQL 2008
Отправлено: Triangle от 15 ноября 2018, 14:24:07
Ну как, как, через Management Studio, Задачи-перевести в автономный режим.
Название: Глюк SQL 2008
Отправлено: Opium от 15 ноября 2018, 14:41:29
а, сорян
не снобизма ради - я просто не ориентируюсь в русской студии><
но вобщем всё верно, базы уходят в офлайн и недоступны для проверки, в итоге у тебя в исходном коде 2 "спотыкашки"
1. use <dbname>
2. DBCC CHECKDB(N'<dbname>')  WITH NO_INFOMSGS

ЗЫ:
вообще переводить базу в офлайн - такая себе тема, в этом режиме сиквел перестаёт "держать" файлы на диске и их можно удалить, переименовать и вообще что угодно с ними делать непосредственно из операционки
как следствие, если сделать drop database офлайновой базы - сиквел не удалит файлы, они останутся лежать там же где и лежали и будут занимать место.
Название: Глюк SQL 2008
Отправлено: Triangle от 15 ноября 2018, 14:55:11
Да меня что удивило что в исходном коде, в том который виден в задаче не было этих спотыкашек, а в логе по результатам выполнения есть, вот это блин номер. Я их в автономку загнал чтобы к ним случайно не подключились, это надо то было на пару дней, пока всем лишние ярлыки на приложения прибивал(старый самопал на базе Аксеса с хранением в SQL)