Данная ошибка никогда не возникает, если вы создаете базу. Ошибка возникает только тогда, когда вы переносите базу с одного MS SQL сервера на другой.

Загрузить

fixBmssa.sql - запрос, который исправляет несоответствие кодов для пользователя bmssa в базе MS SQL.

 

Описание проблемы

Все настройки сделаны правильно. Пользователи и пароли указаны правильно. Однако... сразу после запуска Аксапта показывает ошибку Invalid object Name 'SQLSystemVariables'. Аксапта выдает несколько окон с ошибкой доступа к этой самой таблице SQLSystemVariables. Если ответить нет на все вопросы, то Аксапта автоматически закрывается, и работать с ней невозможно.

Сообщение об ошибке SQLSystemVariables

 

Внешние признаки этой проблемы

Невозможно изменить уровень доступа к базе данных для bmssa.

Примечание: описание проблемы и решение дано для польователя bmssa. В рабочей базе данных вы, скорее всего, используете другого пользователя. В этом случае измените в скритпе имя пользователя.

У bmssa могут быть установлены галочки для роли publiс и db_owner. Но их невозможно убрать. Или наоборот, для bmssa не указаны вообще никакие роли доступа к базе. В этом случае, роли невозможно установить.

Ошибка при изменении роли доступа к базе Роли могут вообще отсутствовать

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

Пользователь базы данных не связан ни с каким логином MS SQL

 

В чем причина проблемы

Проблема состоит в том, что MS SQL внутри работает не с текстовым именем bmssa, а с числовым идентификатором, который привязан к этому имени. Когда вы переносите базу имя bmssa и идентификатор переносится без изменений. Но идентификатор пользователя на новом сервере другой! Поэтому MS SQL не может связать базу данных с другого сервера с пользователем на вашем сервере.

Подробнее об этом можно почитать Book OnLine (BOL), который входит в поставку MS SQL Server.

 

Решение

Нужно открыть Query Analyzer. В нем законнектиться к базе данных и выполнить следующую хранимую процедуру:

sp_change_users_login 
'Auto_Fix', 'bmssa'

Query Analyzer должен сообщить, что "осиротевшие" пользователи (orphaned) обновлены. После чего можно смело запускать Аксапту.

Сообщение в Query Analyzer

 

Примечание от Михаила Андронова от 18.08.03: см. совет Разделение прав доступа на MS SQL. Скрипт предложенный там, в качестве побочного действия решает и проблему SQLSystemVariable.

 

Буду рад Вашим замечаниям и предложениям.
E-Mail: mazzy@mazzy.ru, Мазуркин Сергей