пятница, 6 августа 2010 г.

1C 7.7 + SQL 2008+ Windows 7 - очередная инструкция

(найдено на sql.ru) автор - tema

Ставим 2008-й скуль
1. Ставим SQL 2008. Для компоненты Database Engine (и на всякий случай для Analysis Services) нужно выбрать кодировку Cyrilic_General_CI_AS.
Для этого кликаем кнопку «Настройка».

2. Выбираем с списке «Cyrilic_General» и ставим только один флаг: «С учетом диакритических знаков».

Для общего развития.
AS – с учетом диакритических знаков;
AI – без учета диакритических знаков;
CS – c учетом регистра;
CI – без учета регистра;

3. Создаем в «SQL Server Management Studio» базу. Для базы ставим те же параметры сортировки, что и для скуля – Cyrilic_General_CI_AS. Устанавливаем уровень совместимости базы – SQL Server 2000 (80).

Для общего развития.
Если для сиквела при установке или для базы выбрать не правильный порядок сортировки, то в некоторых случаях можно наблюдать следующее сообщение об ошибке, после которого следует вылет 7-ки.

1. 1С 77 для работы необходима определенная кодировка (и порядок сортировки), в таблицах БД и в tempdb.
В своих запросах она никогда ни где не указывает кодировку явно (это MSSQL в принципе позволяет), а сравнение полей, которые в разных кодировках невозможно (без явного приведения кодировки), поэтому так важна кодировка по-умолчанию для базы данных, и кодировка по умолчанию для tempdb, т.к. если явно не указано, то при создании таблиц сервер берет ее оттуда.
2. При старте 1С она проверяет кодировку tempdb, но tempdb пересоздается каждый раз при старте MSSQL, при этом сервер ставит кодировку tempdb такую же как у себя (а именно у БД master). Поэтому становится также важна кодировка самого сервера (БД master).
3. MSSQL 2000 может работать с кодировками Windows (ОС на которой он установлен, или со своими родными (которые прошиты в него)). Допустимых кодировок для работы 1С всего две:
Cyrilic_General_CI_AS - Windows;
SQL_Latin1_General_CP1251_CI_AS - родная MSSQL;
Надо отметить, что не смотря на это (то что 1С подходят обе), без явного приведения MSSQL также не сможет сравнивать в запросах поля когда они в этих двух разных кодировках, т.к. для него они всеже разные.

Ставим 7-ку

1. Ставим 27-й релиз с поддержкой SQL 2005.

2. Для того что бы 1С при запуске не ругалась на не совпадающий порядок сортировки и не проверяла его, в каталог BIN кидаем пустой файл OrdNoChk.prm. Если проверку кодировки нужно отключить только для одной базы то файл кидаем не в BIN, а в каталог базы.

3. Семерка при запуске ругнется на ODBC-драйвер. Потребует версию 3.5.0303 или выше. Проблема заключается в том, что 7-ка не знает о существовании ODBC-дров, выпущенных после неё самой.

Берем машину с установленной XP. Залазим в C:\WINDOWS\system32\. Берем там пару файлов: sqlsrv32.dll и sqlsrv32.rll. Эти файлы нужно скопировать (с заменой) в аналогичное место в Висту.

Следующие действия производил в Safe Mode, но можно попробовать и в обычном режиме.

Нужно в Висте получить полные права на файлы sqlsrv32.dll и sqlsrv32.rll. Для этого в свойствах файлов переходим на закладку «Безопасноть». Выбираем в юзерах себя, жмем «Дополнительно».

Снова выбираем себя, жмем «Изменить».

И снова выбираем себя, жмем «Изменить».

Даем себе полные права на dll’ки.

После этого можно попробовать заменить dll’ки. Если Виста все же не дает прав на замену файлов, запускаем с админскими правами консоль и набираем следующее:

cd C:\WINDOWS\system32
takeown /F sqlsrv32.dll
takeown /F sqlsrv32.rll

После таких команд точно все скопируется.

Комментариев нет: