Данная статья является изложением опыта запуска 1С:Предприятия v7.7 на MS SQL Server 2005. К сожалению, «штатно» 1С:Предприятие v7.7 работу с MS SQL Server 2005 не поддерживает, поэтому понадобятся некоторые ухищрения, которые и будут здесь описаны. Примечание: на данный момент имеется опыт успешной промышленной (не тестовой) эксплуатации 1С:Предприятия v7.7 с MS SQL 2005. При этом размер mdf-файла рабочей базы данных составляет порядка 10 Гб, количество одновременных подключений — порядка 60, конфигурация полностью самописная, активно используется технология 1С++ в части «прямых» запросов к базе данных.
При установке SQL сервера необходимо выставить режим авторизации «MixedMode» (т.е. Windows+SQL), и указать пароль для учетной записи «SA». Параметр «Server Collation» следует установить как «Cyrillic_General_CI_AS». Получить текущий Server Collation можно такой командой:
SELECT CONVERT (varchar, SERVERPROPERTY('collation'))
Если SQL сервер «не виден» с других компьютеров (1С выдаёт сообщение «SQL-сервер не существует, или отсутствует доступ.»), следует разрешить удаленные соединения в SQL Server Surface Area Configuration. Меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «Configuration Tools» — «SQL Server Surface Area Configuration». Выбрать ссылку «Surface Area Configuration for Services and Connections», в дереве выбрать элемент «Remote Connections».
Если у вас MS SQL Server 2005 Express Edition, в 1С в «Параметрах базы данных SQL» нужно указывать не просто имя сервера, а Имя_Сервера\SQLEXPRESS.
В свойствах базы данных на SQL Server необходимо поставить Compatibility Level «SQL Server 2000(80)». Это можно сделать в Microsoft SQL Server Management Studio Express (меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «SQL Server Management Studio Express CTP»). Примечание: база данных может быть создана на Microsoft SQL Server 2000, и перенесена на Microsoft SQL Server 2005 через простой Detach — Attach, можно также через Backup — Restore. Однако простого пути для возврата базы назад (на MS SQL 2000) уже не будет.
Получить текущий Compatibility Level базы данных можно и такой командой:
EXEC sp_dbcmptlevel <DataBaseName>
Установить Compatibility Level базы данных в «SQL Server 2000(80)» можно так:
EXEC sp_dbcmptlevel <DataBaseName>, 80
Если возникают проблемы с подключением к базе MS SQL 2005, просмотрите настройки протоколов в «SQL Server Configuration Manager». Меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «Configuration Tools» — «SQL Server Configuration Manager».
Поскольку 1С v7.7 штатно не поддерживает MS SQL 2005, вы получите сообщение «Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия!». Чтобы устранить это, необходимо изменить BkEnd.dll следующим образом (для 21-го релиза 1С):
000D9B7A: 83 EB 000D9B7B: E8 15 000DAFE0: 83 EB 000DAFE1: E8 10
Для 25-го релиза 1С:
000D9C4A: 83 EB 000D9C4B: E8 15 000DB0B0: 83 EB 000DB0B1: E8 10
Для 26-го и 27-го релизов 1С:
000D9CCA: 83 EB 000D9CCB: E8 15 000DB130: 83 EB 000DB131: E8 10
Для возможности коллективной работы в базе данных (одновременной работы нескольких пользователей) необходим режим Multiple для базы данных («Properties — Options — State — Restrict access» — «Multiple»).
Возможно, для коллективной работы в базе данных (одновременной работы нескольких пользователей) могут потребоваться дополнительные изменения в BkEnd.dll, которые можно произвести с помощью Unofficial Service Pack v2.13.24 для 24 релиза 1С (он работает и на 25 релизе), установив флажок «Разрешать другим пользователям входить в базу (SQL)» на вкладке «Защита». Эти изменения можно произвести и вручную (для 25-го релиза 1С):
000DA023: 85 40 000DA024: C0 90
Примечание: после вышеупомянутых изменений 1С будет производить верификацию структуры таблиц и процедур всегда, а не только при входе первого пользователя в базу (при коллективной работе), что немного замедлит запуск 1С.
При работе на базе MS SQL 2005 может возникнуть проблема с автонумерацией документов (при интерактивном создании нового документа номер присваивается некорректно), причём проблема эта воспроизводится не всегда. Чтобы обойти эту проблему, можно поместить в процедуру «ПриЗаписи» всех документов код, подобный следующему:
докДок=СоздатьОбъект("Документ."+Вид()); Если докДок.НайтиПоНомеру(НомерДок,ДатаДок) = 0 Тогда Если докДок.ТекущийДокумент() = ТекущийДокумент() Тогда УстановитьНовыйНомер(); КонецЕсли; КонецЕсли;
Как обойти подводные камни установки
При попытке соединиться с базой 1С пишет следующее: «Требуется MS SQL Server версии 6.5 + service pack 5a или более старшая версия». Для решения возникающих проблем необходимо подправить файл bkend.dll:
000D9C4A: 83 EB 000D9C4B: E8 15 000DB0B0: 83 EB 000DB0B1: E8 10
(для 25 релиза платформы 1С).
В общем случае правильный порядок установки 1С в связке с Microsoft SQL Server 2005 следующий. При установке Microsoft SQL Server 2005 необходимо выставить режим авторизации «MixedMode» (Windows+SQL), и указать пароль для учетной записи «SA». Параметр «Server Collation» следует установить как «Cyrillic_General_CI_AS». Важный момент – имя базы данных не может начинаться с цифры, например «1CBase» будет некорректным названием и вызовет ошибки при подключении.
Если SQL Server 2005 недоступен с других компьютеров (1С выдаёт сообщение «SQL-сервер не существует, или отсутствует доступ»), следует разрешить удаленные соединения в SQL Server Surface Area Configuration. Меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «Configuration Tools» — «SQL Server Surface Area Configuration». Выбрать ссылку «Surface Area Configuration for Services and Connections», в дереве выбрать элемент «Remote Connections».
Если у вас установлен Microsoft SQL Server 2005 Express Edition, в 1С в «Параметрах базы данных SQL» нужно указывать не просто имя сервера, а Имя_Сервера\SQLEXPRESS.
В свойствах базы данных на SQL Server необходимо поставить Compatibility Level «SQL Server 2000(80)». Это можно сделать в Microsoft SQL Server Management Studio Express (меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «SQL Server Management Studio Express CTP»). Примечание: база данных может быть создана на Microsoft SQL Server 2000, и перенесена на Microsoft SQL Server 2005 через простой Detach — Attach, можно также через Backup — Restore. Однако простого пути для возврата базы назад (на MS SQL 2000) уже не будет.
Если возникают проблемы с подключением к базе MS SQL 2005, просмотрите настройки протоколов в «SQL Server Configuration Manager». Меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «Configuration Tools» — «SQL Server Configuration Manager».
Ссылки для скачивания бесплатных дистрибутивов Microsoft: