v7: Windows 2008 и 1С 7.7 SQL #624941


#0 by SiriuS15009
Добрый день. Нужна помощь, советы. Использую связку Win Server 2008 R2 + SQL Server 2008 R2 + 1C 7.7 (27 релиз) При обновлении конфигурации очень часто сталкиваюсь со следующей проблемой, когда при принятии изменений в конфигурации 1С выдает  «База данных не может быть открыта в однопользовательском режиме». Помогает только остановка/запуск сервера или выждать по таймауту.   Хотелось бы это решить кординально раз и на всегда. На форумах натолкнулся на следующий совет: Под MS SQL 2008 1С может при реструктуризации таблиц ИБ и обновлении MD выдавать ошибку «База данных не может быть открыта в однопользовательском режиме». a.Иногда помогает просто подождать 10-15 минут и ошибка проходит сама собой. 1С некорректно работает с сервером: она оставляет открытыми служебные соединения, которые ей же самой и мешают. Сервер сам закрывает такие соединения по таймауту. b.Чтобы кардинально избавиться от таких проблем можно пропатчить bkend.dll, заменив там все вхождения строки (их там 2): Select COUNT(*) from master..sysprocesses where dbid=DB_ID('%s') на вот такую:Select COUNT(*) from master..sysprocesses where kpid=DB_ID('%s') В результате 1С перестанет проверять наличие повисших сеансов и будет запускаться даже если они есть. В частности станет возможно пользоваться средством management studio параллельно с работой конфигуратора 1С. но не совсем понятно чем чревато такое игнорирование повисших сеансов, если подводные камни в таком решении
#1 by varelchik
Для начала немешало бы объяснить каким образом вы уважаемый заставили 7.7 дружить с SQL 2008.
#2 by SiriuS15009
varelchik, помоему это не для кого не секрет: - замена системных sqlsrv32.dll и sqlsrv32.rll - установка 1Cv_77_27_Unisetup - замена на пропатченый bkend.dll либо правка некоторых строк в нем ручками
#3 by ADirks
есть более комплексное решение:
#4 by spock
наоборот, симлексное :)
#5 by SiriuS15009
попадалось на глаза и такое решение, но насторожило: - нет совместимости с некоторыми 1c++ запросами (ищу решение) Да и в моем варианте все устраивает, кроме как таких зависших сеансов, с ними бы найти способ как бороться.
#6 by shamashs
я на 2012 поднял  недавно, только пользы я думаю нет учитываю что библиотеки используются от 2005
#7 by ADirks
мышки любят кактус? стопиццот народу это решение юзает уже, а "некоторые запросы" ещё ухитриться написать надо
#8 by ЧеловекДуши
Пилите шура, они золотые :)
#9 by ЧеловекДуши
Он себя считает умнее других :)
#10 by ЧеловекДуши
+ Учись пользоваться ссылкой ...решения нет (есть грабли)... но было 1001 обсасывание проблемы...
#11 by varelchik
Тебе же носом ткнул о решении проблемы. Я уже больше чем полгода работаю с их помощью. И никаких затыков вообще не наблюдал. Да и 1С стала намного надежнее работать. С учетом того что у меня 40 перефирийных баз. Полет просто замечательный с учетом того, что скорострельность 1С выросла в разы. И незабывайте что у меня половина системы работает на 1С++. Так что ненадо ляля. Слушайся ADirks, он то уже знает что говорит.
#12 by monsterZE
а что показывает в этот момент скл-менеджмент-студио? там вполне можно мониторить ситуацию и кикать подвисшие сесси, если дело в них. не рестартуя весь скл-сервер..
#13 by SiriuS15009
ADirks, varelchik, ладно ладно убедили..не зачем так пинать, я понял что надо попробовать этот способ. только вот скачать по этой ссылке не получается без проблем. Может есть альтернативный линк или можете выложить на какой-нибудь обменник, буду благодарен. И еще, раз этот способ позволяет работать без понижения до mssql 2000, то можно смело выставлять уровень совместимости для базы 2008?
#14 by varelchik
Конечно. стучись 477687116 и скину и помогу.
#15 by SiriuS15009
Возник еще вопрос, забыл что проделывал над системой следующее: Установить 1c_Vista_server_2008_fix.zip 1. Папку 1Cv7_SQLDriver и файл 1sfix.sdb скопировать в корень диска C 2. Импортировать в реестр файл 1C_SQL_ODBC.reg 3. С помощью команды sdbinst.exe [путь к файлу] 1sfix.sdb установить исправление. (Пуск -> Выполнить -> Набрать cmd. Выполнить команду: sdbinst.exe c:1sfix.sdb В самом файле реестра: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWARE1C_SQL_ODBC] "Driver"=hex:43,00,3a,00,5c,00,31,00,43,00,76,00,37,00,5f,00,53,00,51,00,4c,  00,44,00,72,00,69,00,76,00,65,00,72,00,5c,00,53,00,51,00,4c,00,53,00,52,00,  56,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,00,00 "UsageCount"=dword:00000001 "Setup"=hex:43,00,3a,00,5c,00,31,00,43,00,76,00,37,00,5f,00,53,00,51,00,4c,  00,44,00,72,00,69,00,76,00,65,00,72,00,5c,00,53,00,51,00,4c,00,53,00,52,00,  56,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,00,00 "SQLLevel"="1" "FileUsage"="0" "DriverODBCVer"="02.50" "ConnectFunctions"="YYY" "APILevel"="2" "CPTimeout"="60" Дело в том, что после того как вернул родные sqlsrv32.dll и sqlsrv32.rll на место и убрал папку 1C_SQL_ODBC с корня диска 1С продолжала видеть данный путь и требовать их оттуда - почистил добавленную ветку реестра, но теперь 1С выдает следующее: [Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию Я так понимаю дело в этом (sdbinst.exe c:1sfix.sdb) а как откатить не знаю.
#16 by SiriuS15009
Начал разбираться и как я пониаю произошла подмена путей к файлам sqlsrv32.dll и sqlsrv32.rll, вопрос в том как вернуть все на свои места. В продолжение темы: патч VirtualRegistry. В кратце что делает патч совместимости:   Как оказалось 1с при старте лезит в раздел реестра HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INISQL Server и из ключа Driver считывает путь к файлу sqlsrv32.dll который потом и грузит.   Патч подменяет для программы 1с путь в реестре на HKEY_LOCAL_MACHINESOFTWARE1C_SQL_ODBC в котором указан путь к нужному файлу sqlsrv32.dll который лежит в c:1Cv7_SQLDriver   Замечу что ни какие системные библиотеки и ключи реестра не изменяются.
#17 by SiriuS15009
не актуальны, разобрался сам:
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С