Имя: Пароль:
1C
1C 7.7
v7: Windows 2008 и 1С 7.7 SQL
0 SiriuS15009
 
14.08.12
10:50
Добрый день. Нужна помощь, советы.
Использую связку 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 varelchik
 
14.08.12
11:31
Для начала немешало бы объяснить каким образом вы уважаемый заставили 7.7 дружить с SQL 2008.
2 SiriuS15009
 
14.08.12
11:52
varelchik, помоему это не для кого не секрет:
- замена системных sqlsrv32.dll и sqlsrv32.rll
- установка 1Cv_77_27_Unisetup
- замена на пропатченый bkend.dll либо правка некоторых строк в нем ручками
3 ADirks
 
14.08.12
11:53
есть более комплексное решение: http://infostart.ru/public/82018/
4 spock
 
14.08.12
11:57
(3)наоборот, симлексное :)
5 SiriuS15009
 
14.08.12
11:59
попадалось на глаза и такое решение, но насторожило:
- нет совместимости с некоторыми 1c++ запросами (ищу решение)

Да и в моем варианте все устраивает, кроме как таких зависших сеансов, с ними бы найти способ как бороться.
6 shamashs
 
14.08.12
11:59
я на 2012 поднял  недавно, только пользы я думаю нет учитываю что библиотеки используются от 2005
7 ADirks
 
14.08.12
12:15
(5) мышки любят кактус?
стопиццот народу это решение юзает уже, а "некоторые запросы" ещё ухитриться написать надо
8 ЧеловекДуши
 
14.08.12
12:27
(5)Пилите шура, они золотые :)
9 ЧеловекДуши
 
14.08.12
12:27
(7)Он себя считает умнее других :)
10 ЧеловекДуши
 
14.08.12
12:28
+ (0) Учись пользоваться ссылкой http://www.forum.mista.ru/find.php
...решения нет (есть грабли)... но было 1001 обсасывание проблемы...
11 varelchik
 
14.08.12
12:43
Тебе же (3) носом ткнул о решении проблемы.
Я уже больше чем полгода работаю с их помощью.
И никаких затыков вообще не наблюдал.
Да и 1С стала намного надежнее работать.
С учетом того что у меня 40 перефирийных баз.
Полет просто замечательный с учетом того, что скорострельность 1С выросла в разы.
И незабывайте что у меня половина системы работает на 1С++.
Так что ненадо ляля.
Слушайся ADirks, он то уже знает что говорит.
12 monsterZE
 
14.08.12
13:07
а что показывает в этот момент скл-менеджмент-студио? там вполне можно мониторить ситуацию и кикать подвисшие сесси, если дело в них. не рестартуя весь скл-сервер..
13 SiriuS15009
 
14.08.12
13:26
ADirks, varelchik, ладно ладно убедили..не зачем так пинать, я понял что надо попробовать этот способ.
только вот скачать по этой ссылке не получается без проблем. Может есть альтернативный линк или можете выложить на какой-нибудь обменник, буду благодарен.
И еще, раз этот способ позволяет работать без понижения до mssql 2000, то можно смело выставлять уровень совместимости для базы 2008(100)?
14 varelchik
 
14.08.12
14:11
(13)Конечно.
стучись 477687116
и скину и помогу.
15 SiriuS15009
 
15.08.12
15:05
Возник еще вопрос, забыл что проделывал над системой следующее:
Установить 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_MACHINE\SOFTWARE\1C_SQL_ODBC]
"Driver"=hex(2):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(2):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 SiriuS15009
 
15.08.12
17:23
Начал разбираться и как я пониаю произошла подмена путей к файлам sqlsrv32.dll и sqlsrv32.rll, вопрос в том как вернуть все на свои места.
В продолжение темы:

патч VirtualRegistry.
В кратце что делает патч совместимости:  
Как оказалось 1с при старте лезит в раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Server и из ключа Driver считывает путь к файлу sqlsrv32.dll который потом и грузит.  
Патч подменяет для программы 1с путь в реестре на HKEY_LOCAL_MACHINE\SOFTWARE\1C_SQL_ODBC в котором указан путь к нужному файлу sqlsrv32.dll который лежит в c:\1Cv7_SQLDriver  

Замечу что ни какие системные библиотеки и ключи реестра не изменяются.
17 SiriuS15009
 
16.08.12
09:21
(15)(16) не актуальны, разобрался сам:
sdbinst.exe -u c:\1sfix.sdb
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший