Главная arrow Статьи arrow Часть 3. Восстановление, проверка базы 1с на SQL сервере

Программа поддержки

Скачать

Карта сайта

Карта сайта
Форум
Часть 3. Восстановление, проверка базы 1с на SQL сервере
Написал Обслуживание 1С Одесса   

Если 1с во время работы начинает выдавать непонятные сообщения (Ошибка СУБД: Microsoft OLE DB Provider for SQL Server …  HRESULT=), то пришло время брать админский бубен и колдовать.
Сначала о причинах. В моей практике чаще всего база данных SQL в первую очередь вылетает из-за проблем с электричеством. Это скачки напряжения, коротковременные отключения при отсутствующем  источнике бесперебойного питания. Кстати, наличие UPS так же спасает не всегда. Во-первых, не все они переносят скачки напряжения. А в наших сетях приходится сталкиваться с этим довольно часто. А во-вторых - срок службы аккумуляторов в них составляет 2-3 года. Вывод простой, менять батареи в УПСах, покупать УПСы с функцией AVR (автоматической регулировки напряжения). На втором месте конечно качество остального железа: блока питания, жестких дисков, материнской платы.

Восстановление…
Начать, как всегда стоит с создания резервной копии базы 1с, в том виде, какая она есть. Если не удается это сделать средствами 1с или SQL, то как минимум скопировать файл базы данных SQL. Бывают разные ситуации, иногда приходится восстанавливать базу из архива и затем «лечить» ее каким-нибудь другим методом.
Попробуем обойтись «малой кровью» и выполним проверку целостности базы средствами 1С. Зайдем в конфигуратор, в меню найдем «Тестирование и исправление ИБ» и в путь! Время ожидания проверки может доходить до нескольких часов. Сказать сколько именно, можно будет только после окончания. Это зависит от размера базы, ее структуры, и конечно от мощности серверов. Следует запастись терпением.  Если есть возможность, то тестирование можно перенести на самый мощный компьютер, который есть под руками.
Решение «малая кровь 2» - это описанный миллион раз вариант с выгрузкой и повторной загрузкой базы из конфигуратора 1с. Кажется, что ничего не изменится? Попробуем развеять сомнения.  В полной базе 1с хранит не только индексы, которые могли быть испорчены, но и большое количество заранее рассчитанных  промежуточных итогов по всем регистрам. При выгрузке эта информация теряется, а при загрузке пересчитывается заново. Если была испорчена именно эта часть, то есть еще один шанс.
Если все предыдущие методы не дали эффективного результата, перейдем к проверке базы из MS SQL. Для этого нам не обходимо зайти в QA (Query Analyzer). В окошке набираем команду, для перевода базы в монопольный однопользовательский режим «single user»:
sp_dboption '1CBase','single user',true
В данной и последующих командах 1CBase в одинарных кавычках,  это имя вашей базы на сервере (не путать с названием базы 1с). Обычно оно включает только латинские буквы и арабские цифры.
Следующая команда проверяет базу в щадящем режиме. При этом гарантирована сохранность данных.
DBCC CHECKDB ('1CBase' , REPAIR_REBUILD)
Иногда этот способ может, так же как и предыдущие варианты, не принести результата. Обычно эта проверка проходит достаточно быстро. После ее выполнения появится список с исправлениями. Если ошибки удалось исправить, то далее выведем базу SQL из монопольного режима.
sp_dboption '1CBase','single user',false
Однако не всегда удается обойтись  без потери даннях, тога пробуем выполнить:
DBCC CHECKDB ('1CBase ',REPAIR_ALLOW_DATA_LOSS)
После ее завершения все равно не забудем перевести базу из режима single-user.
 
< Пред.   След. >