Недавно столкнулся с этой проблемой при попытке запуска 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 на икспишные, или редактирование файлов, добавление строчек и прочая вздрочь с бубном не нужны, да и не всегда помогают, и по отдельности, и все вместе, и в любых комбинациях. Реальным решением проблемы есть
Для обладателей sql-версии, у которых база данных размещается на MS SQL 2005/2008, необходимо соблюсти следующие требования для sql-логина (учетка, под которой 1с подключается к sql):
С первым требованием все и так ясно, второе - требует пояснений. Для определения количества соединений к текущей базе данных, 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
Все остальные настройки по-умолчанию. Все, на этом проблема решена. Надеюсь, сэкономил кому-то драгоценное время.
Для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше
Никакие создания файлов bin-папке 1С для отключения проверки бла бла бла, или замена odbcbcp.dll, sqlsrv32.dll, sqlsrv32.rll на икспишные, или редактирование файлов, добавление строчек и прочая вздрочь с бубном не нужны, да и не всегда помогают, и по отдельности, и все вместе, и в любых комбинациях. Реальным решением проблемы есть
Секретный релиз платформы v77.27.1 Просто найдите в сети кем-то благородно выложенный архив (тут, к примеру) и установите это решение. И все заработает. Порядок установки приведу ниже:
- Установить платформу из оригинального установщика;
- Установить и настроить HASP-ключ (обязательное условие, а то к вам придут врачи);
- Переименовать оригинальный файл BkEnd.dll в BkEnd0.dll (0 - это ноль);
- Скопировать файлы BkEnd.dll и BkEndUtls.dll из поставки в каталог, куда установлена 1с (например, C:\Program Files\1Cv77\BIN);
Для обладателей 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
Все остальные настройки по-умолчанию. Все, на этом проблема решена. Надеюсь, сэкономил кому-то драгоценное время.
Спасибо!) у меня всё заработало!)
ОтветитьУдалитьСпасибо!!!!
ОтветитьУдалить