Будни 1С-ника. Операция CREATE FILE вызвала ошибку операционной системы 32

Опубликовал Марат ZMore (Marik) в раздел Администрирование - Системное

Ошибка на ровном месте (но найти решение оказалось очень трудоемким), поэтому решил выложить, авось кому пригодится

Добрый день, коллеги!

В общем, история такая. Есть БД на 1С 8.2, которую я переношу на 1С 8.3, вроде процесс идет. Все ниже перечисленное (алиас БД и прочее - вымышленное или тестовое :)

Давеча решил восстановить БД из архива, все просто, но вот застрял на пару дней. У меня была одна тестовая база, и я решил накатить архив на нее. Архив восстановился без проблем, я поработал, потом решил забрать БД домой и проработать детали дома (благо февральские праздники, вообще не представляю, что делать в длинные праздники). Поработал дома, прихожу в офис, копирую БД и делаю "Присоединить" и опля - ошибка:

Сразу подумал на права, назначил все права, полный доступ, Unlocker не помог. Русский сегмент интернета тоже, там сходились на мысли, мол "дай права и все", "проверь под какой учеткой запускается сервисы sql", короче ничего дельного. Пришолось гуглить на забугорных сайтах и вот добрый человек из "клятой" нами "пиндосии" дал норм совет, который я и выкладываю (если кто сможет объяснить лучше я только рад)

1. Проблема была в системной базе TempDB, а имеено типа в ней уже лежит инфа о том, что БД, которую я пытаюсь присоединить уже "присоединена", хотя в списке БД в дереве "Обозревателя объектов" этой БД нет, поэтому попытка "Присоединить" заканчивается fatal error OS код ошибка (32 ). Надо как-то обновить инфу в этомй системной базе.

2. Для начало надо было убедиться в что ошибка именно в этом, скачиваем программу Process Explorer

3. Запускаем

4. На панели инструментов "Find" ищем какие процессы "глумятся" над нашим mdf файлом

5. Видим такую картину

6. Как видно, кроме sqlserver никакого

7. Далее запускаем из командной консоли следующую последовательность команд

1. Старт SQL Server с параметрами “Net Start MSSQL$SQL2014 /mSQLCMD /f /T3608” 
2. Старт SQLCMD с параметрами "SQLCMD –S(local)\SQL2014
3. Выполним скрипт T-SQL

USE master; 
GO 
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014\MSSQL\DATA\tempdb.mdf'); 
GO 
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014\MSSQL\DATA\tempdb.ldf'); 
GO

4. Стоиим SQL командой “net stop MSSQL$SQL2014

5. Старт SQL.в норм режиме (без параметров)

Возможно, у вас пути выглядят по-другому, у меня все стандартно на C установлена.

И вуаля БД присоединяется без проблем, и можно дальше колдовать над ней. Спасибо аглицким доброжелателям, нехай зря мы их "поливаем" дер....мом.

P.S. может, излишне эмоционально, но реально это помогло, а то все 4 дня магичекого колдовства дома над базой, и бац - на работе не мог обновиться (дело не в коде и сравнить/объединить cf файл, а именно сама инфа, которую не выгрузишь в dt файл (нет, можно выгрузить, но только лет через 100 выгрузится база размером 600 ГБ), так что гоняю базу через sql).

Ну и всех женщин с наступающим международным женским днем!

См. также

Комментарии
1. Вячеслав Кадацкий (marsohod) 120 08.03.17 16:12 Сейчас в теме
Есть еще одна миниатюрная программка, которая встраивается в контекстное меню и показывает все блокирующие дескрипторы. Называется Unlocker. Очень удобно - правый клик по файлу в Проводнике, выбираешь "Unlocker" и пожалуйста, всё как на ладони :) Ну, и конечно же, файл можно разблокировать без "убийства" блокирующих процессов (если это допустимо).
2. Роман Ложкин (webester) 22 09.03.17 18:49 Сейчас в теме
Интересно, (1) невнимательно читал или (0) статью отредактировал :)
3. Вячеслав Кадацкий (marsohod) 120 09.03.17 21:13 Сейчас в теме
(2) наверное, все же я невнимательно читал :) Сейчас попробовал, - действительно при открытой SQL базе Unlocker не видит, что ее mdf файл занят :o вот елы-палы...
4. Андрей Овсянкин (Evil Beaver) 3902 12.03.17 08:02 Сейчас в теме
спасибо аглицким доброжелателям, нехай зря мы их "поливаем" дер....мом.


Я уже давно, когда мне что-то надо в гугле - ищу сразу на английском. Ибо ответ будет почти сразу. А на наших сайтах ты три дня будешь объяснять умникам что тебе надо и выслушивать, что ты мудак и вообще...

Это старая, конечно, проблема и поднималась не раз - если хочешь ответ, ищи на английском, если хочешь тупо пофлудить, спроси на мисте.
5. Алексей С. (AlexS2) 145 14.03.17 18:51 Сейчас в теме
Т.е. ошибка возникала при попытке присоединить базу командой Attach? Как интересно, не знал, что это можно вылечить простым пересозданием tempDB... Или в чем цимес? )
Да, и версия скуля какая?
6. Alx Alx (alxarz) 27 28.03.17 22:39 Сейчас в теме
(5)версия видимо 2014

На 2 дня заморачиваться с такой проблемой.... проще было подцепить базу под другим именем, ну и при желании сменить имя в консоли кластера, чем выискивать корень зла.

К тому же темпдб создается каждый раз заново, может чем выполнять какие-то команды достаточно перезапуска скуля?
Оставьте свое сообщение