Недавно столкнулся с этой проблемой при попытке запуска 1С 7.7 на машине с Windows 7. Причем, проблема зависит, похоже, от фазы луны, или прочих космических дел, ибо та же 1С без проблем заработала на другой машине с "семечкой". Ситуация следующая: 1С припопытке соединиться с сервером базы данных (проблема возникает только если БД находится на SQL 2005, на 2008-м все работает из коробки) выдает ошибку
Для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше
Никакие создания файлов bin-папке 1С для отключения проверки бла бла бла, или замена odbcbcp.dll, sqlsrv32.dll, sqlsrv32.rll на икспишные, или редактирование файлов, добавление строчек и прочая вздрочь с бубном не нужны, да и не всегда помогают, и по отдельности, и все вместе, и в любых комбинациях. Реальным решением проблемы есть
- Установить платформу из оригинального установщика;
- Установить и настроить HASP-ключ (обязательное условие, а то к вам придут врачи);
- Переименовать оригинальный файл BkEnd.dll в BkEnd0.dll (0 - это ноль);
- Скопировать файлы BkEnd.dll и BkEndUtls.dll из поставки в каталог, куда установлена 1с (например, C:\Program Files\1Cv77\BIN);
Для счастливых обладателей dbf-версии ничего не меняется.
Для обладателей sql-версии, у которых база данных размещается на MS
SQL 2005/2008, необходимо соблюсти следующие требования для sql-логина
(учетка, под которой 1с подключается к sql):
- обладание, как минимум правами db_owner;
- права на VIEW SERVER STATE;
С первым требованием все и так ясно, второе - требует пояснений. Для
определения количества соединений к текущей базе данных, 1с обращается к
системной таблице
sysprocesses. Если у логина отсутствуют права на
VIEW SERVER STATE,
то будут видны только соединения, осуществленные под своей учеткой, что
не совсем хорошо - нужно видеть все соединения с текущей базой, чтобы
получать адекватые сообщения об ошибках. Большинство "специалистов"
запускает 1с под учеткой SA (или другой, но с соответствующими
суперправами), следовательно, у них такой проблемы не стоит. Зато
имеется другая проблема - так называемый фоновый процесс сброса грязных
страниц из кэша буфера данных, при выполнении которого, не удается
запустить 1с в монопольном режиме.
В MS SQL 2005/2008 системная таблица (уже представление, оставленное для обратной совместимости)
sysprocesses
помечена устаревшей и в следующих редакциях MS SQL будет удалена.
Компания Microsoft рекомендует использовать текущие аналоги - так и
поступаем :) Для определения соединений к текущей базе данных (в этом
исправленном релизе платформы 1с) больше не используется системная
таблица
sysprocesses (если ms sql 2005/2008, для ms sql 2000 используется).
Для того, чтобы дать права на
VIEW SERVER STATE нужно выполнить простой скрипт:
USE master
GO
GRANT VIEW SERVER STATE TO GO
Все остальные настройки по-умолчанию. Все, на этом проблема решена. Надеюсь, сэкономил кому-то драгоценное время.