И так, исходные данные:
Свежеустановленная Windows 7 Professional x64, все апдейты и т.д. (проблема имеет место и на Server 2008 и на 2008R2)
Произведена установка платформы 1С 8.2 (тестировались релизы 8.2.16.368, 8.2.16.363, 8.2.15.319)
Установлен сервер 1C x64 (32битный тоже пробовал)
Все работает до перезагрузки. После перезагрузки при попытке подключения к базе в SQL или открытии кластера в консоли 1С получаем отлуп с такими картинками:
При подключении к серверу 1С из консоли получаем:
Ошибка соединения с сервером 1С:Предприятия 8.2:
Ошибка на сервере или соединение разорвано администратором
Ошибка формата потока
При запуске SQL базы получаем ошибку:
Ошибка при выполнении операции с информационной базой.
Ошибка на сервере или соединение разорвано администратором.
Ошибка формата потока
Для возможности запуска базы и подключения к кластеру из консоли помогало только:
1. Остановка службы сервера 1С:Предприятия 8.2
2. Удаление процессов rmngr.exe rphost.exe (сам вылетает при завершении rmngr.exe).
3. Очистка каталога C:\Program Files\1cv82\srvinfo\reg_1541\snccntx (у 32 битного сервера C:\Program Files (x86)\1cv82\srvinfo\reg_1541\snccntx)
4. Запуск службы сервера 1С:Предприятия 8.2
Однако, в процессе работы с SQLной конфой, можно было неожиданно поймать аварийное закрытие 1Ски с последующим получением этих же ошибок.
Были протестированы:
1. различные релизы, различные серверы,
2. различные пользователи: Система, Администратор, USR1CV82.
3. принудительное выставление полных прав этим пользователям на каталоги C:\Program Files\1cv82\ (у 32 битного сервера C:\Program Files (x86)\1cv82\) с наследованием на дочерние объекты.
4. десятки перезагрузок и многое другое.
Однако причина оказалась куда более неожиданной!
Разыменование в Windows 7 (Server 2008, 2008R2, вероятно и 2012)
Попробуйте пропинговать свой комп по имени. То что Вы увидите, определит возможность применения моего решения.
Выполнить это просто:
1. Запустите командную строку (Win+R, наберите cmd и нажмите ОК)
2. В командной строке наберите команду "Ping" пробел и имя вашего компьютера. Именно имя, а не его IP адрес. Нажмите Enter.
3. Если система начала пинговать себя через адрес вида fabc:de12:3456:7890:ABCD:EF98:7654:3210, или другой отличный от Вашего IP адрес
- добро пожаловать в частный клуб багофичи разыменования по версии Windows 7.
Основа проблемы кроется в том, что 1С сервер не может по имени определить себя.
А вот, отображение Вашего IP в виде IPv6 - одна из самых частых причин возникновения этой ошибки.
Еще одной из причин может быть периодическое подключение к другой сети (допустим ВПНу) когда создается новый интерфейс и Винда опять же начинает разыменовывать себя "неправильно".
Ниже я опишу два решения для обхода этой "особенности".
Предварительно хочу предупредить:
Все действия с Вашим компьютером Вы производите на свой страх и риск.
Человек выполняющий мои рекомендации должен понимать Что и Почему он делает!!!
Вариант №1 Добавить в Hosts свой ПК и его IP
1. Нужно найти файлик hosts в папке C:\Windows\System32\drivers\etc Если в этой папке Вы не видите файлик Hosts, значит он просто скрыт. Тогда можно нажать клавишу ALT и, в появившемся меню, выбрать "Сервис"-"Параметры папок"-"Вид" и снять там галочку "Скрывать защищенные системные файлы". Можно еще установить переключатель "Показывать скрытые файлы, папки, диски", тогда вообще все будет видно. (После манипуляций с Hosts, рекомендую вернуть галочку на ее прежнее место, что бы случайно чего не зацепить в будущем)
2. Открыть этот файлик в Notepad (блокнот) и в конец дописать строку вида 192.168.0.1 Server (IPадрес ИмяПК). Сохранить и закрыть файлик.
3. Попробовать заново пропинговать свой ПК через имя. Если Вы снова не видите нужно IP - что-то пошло не так... Возможно антивирус вернул старую версию файла (Каспер такое любит) или что-то еще.
В общем нужно добиться правильного адреса при пинге через имя.
Вариант №2 Отключить полностью протокол IPv6 (http://support.microsoft.com/kb/929852)
- Нажмите Win+R, напишите regedit и нажмите Enter. Откроется редактор реестра.
- Если появиться запрос на разрешение действий, нажмите в диалоговом окне Контроль учетных записей пользователей кнопку Продолжить.
- Найдите и выберите следующий подраздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
- Дважды щелкните пункт DisabledComponents для изменения параметра DisabledComponents.
Если параметр DisabledComponents отсутствует, его необходимо создать. Для этого:- Находясь на ветке Parameters, в меню Правка выберите пункт Создать, а затем — Параметр DWORD (32 бита).
- Введите DisabledComponents и нажмите клавишу ВВОД.
- Дважды щелкните пункт DisabledComponents.
- Введите значение ffffffff , а затем нажмите кнопку ОК.
- Перегрузить компьютер.
Выглядеть должно так:
Таким образом Вы отключите протокол IPv6 полностью и Винда не будет использовать его IP вдрес для разименования.
ВАЖНО!!!
Обязательно пропингуйте свой ПК через имя и убедитесь, что пинги идут на правильный IP адрес. Не всегда, с первого раза, удается отключить IPv6 (то имя параметра не совсем правильное, то значение...)
Хочу напомнить, что оба решения не являются панацеей, и не самом деле позволяют обойти ошибку, а не устранить ее причину.