Как сбросить пароли пользователей 1С 8.3 на СУБД MS SQL Server
Рассмотрим способ сброса паролей SQL-базы 1С, если вы случайно потеряли доступ к учетной записи администратора (-ов) или не знаете вообще паролей пользователей ИБ.
Сценарием поделился Андрей Грибчатов — читатель нашего Дзен-канала. Отдельная благодарность Андрею за это элегантное решение.
Еще раз. Перед нами стоит задача — обнулить или сменить пароль администратора информационной базы 1С на SQL и вернуть себе управление. Поехали.
Внимание
>>> Выполняйте действия на копии базы 1С или тестовой системе. Обязательно! Команды предполагают прямую корректировку записей в таблицах SQL. Под вашу ответственность. <<<
Вводные условия для теста
- Технологическая платформа 8.3.18.1208 x64, клиент-серверный режим на MS SQL Server.
- База 1С открывается до этапа выбора пользователя, но возможности авторизоваться нет (пароли утеряны).
- Есть административный доступ к СУБД через оснастку управления SQL Server Management Studio.
Первый этап
На первом шаге запускаем Management Studio и открываем консоль запросов.
Следующими командами делаем копии таблиц v8users и Params. С дальнейшей очисткой v8users и строчки в таблице Params, содержащей значение «users.usr».
, где [DatabaseName] — имя вашей информационной базы 1С.
Успешное выполнение запроса
Второй этап
Не закрывая окно SQL Server Management Studio, откройте базу 1С в режиме Конфигуратора. Т. к. список пользователей зачищен, то Конфигуратор должен открыться без пароля в штатном режиме.
После открытия Конфигуратора вернитесь в окно запросов SQL и выполните следующие команды:
Этот сценарий возвращает данные обратно в таблицы v8users и Params.
Возвращение содержимого таблиц v8users и Params из копий
После этого действия вы можете открыть список пользователей в Конфигураторе (Меню «Администрирование — Пользователи») и поменять или сбросить пароли пользователей.
Например, выбрать учетную запись с полными правами и обнулить пароль.
Или поставить аккаунту «аутентификация операционной системы» от имени текущего пользователя, а потом в режиме Предприятия добавить нового пользователя, а аутентификацию вернуть как было.
Успехов вам в восстановлении доступа к базе (-ам). Если требуется дополнительная поддержка — наши специалисты готовы помочь → +7-911-500-10-11
1С 8.3 : Как сбросить пароли пользователей 1C если база на SQL Server или PostgreSQL
Бывают случаи когда есть доступ на SQL Server, а пароль от пользователя 1С с полными права потерян, в этом случае возможно снять пароль способом который описан ниже, итак поехали.
Платформа 1С при работе на SQL Server хранит список пользователей в двух местах, а именно в таблице v8users и в файле users.usr который бинарно расположен в таблице Params.
Теперь попробуем заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо всего навсего переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio логинимся и создаем запрос к базе данных с содержанием:
После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:
После выполнения запроса в списке пользователей появяться все пользователи 1С, останеться только найти нужного и изменить ему пароль.
1 с 8 Предприятие. Конфигурирование и администрирование.
Бывают случаи когда БД работает в серверном варианте, при этом есть доступ на SQL Server, а пароль от пользователя 1С с полными права потерян, в этом случае возможно снять пароль способом который описан ниже.
Итак, поехали.
Платформа 1С при работе на SQL Server хранит список пользователей в двух местах, а именно в таблице v8users и в файле users.usr который бинарно расположен в таблице Params.
Теперь попробуем заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо всего навсего переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio логинимся и создаем запрос к базе данных с содержанием:
EXEC sp_rename ‘v8users’, ‘v8users_old’
GO
UPDATE Params
SET FileName = ‘users.usr_old’
WHERE FileName = ‘users.usr’
GO
После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:
DROP TABLE v8users
GO
EXEC sp_rename ‘v8users_old’, ‘v8users’
GO
UPDATE Params
SET FileName = ‘users.usr’
WHERE FileName = ‘users.usr_old’
GO
После выполнения запроса в списке пользователей появяться все пользователи 1С, останеться только найти нужного и изменить ему пароль.
Сброс пользователей в клиент-серверной базе 1С:Предприятия 8.x
В клиент-серверном режиме работы все данные хранятся в базе данных, управляемой одной из СУБД: MS SQL, Postgree SQL, IBM DB2 или Oracle. Информация об учетных записях хранится в двух таблицах: «v8users» и «Params».
В некоторых ситуациях может появиться необходимость сбросить учетные записи пользователей, чтобы войти в информационную базу. В статье рассмотрим действия, необходимые для выполнения этой задачи. В примере будем использовать MS SQL Server 2012 Express . Имя базы данных на SQL-сервере — «Exp».
Для того, чтобы сбросить учетные записи нужно выполнить два действия:
- Удалить таблицу «v8users».
- Удалить запись из таблицы «Params», у которой в первой колонке «FileName» содержится значение «users.usr».
SQL-команды
И так, нам нужны SQL-команды для сброса и восстановления пользователей информационной базы. Начнем с команд сброса списка пользователей. Нам нужно выполнить следующие действия:
- Переименовываем таблицу «v8users» в «h8users» вместо ее удаления. Это позволит восстановить таблицу в дальнейшем. Подробнее о команде «sp_rename» Вы можете прочитать здесь .
- В таблице «Params» также не будем удалять запись, а лишь изменим значение в колонке «FileName» с «users.usr» на «husers.usr». Тогда платформа не сможет найти параметры пользователей информационной базы. Подробнее о команде «UPDATE» Вы можете узнать здесь .
Выполнив эти шаги, мы без проблем сможем зайти в информационную базу, пропустив этап аутентификации. Теперь перейдем к рассмотрению команд по восстановлению списка пользователей. Всего будет три команды:
- Удаление таблицы «v8users», поскольку входа в ИБ платформа создает таблица заново, если она отсутствовала. Вот так выглядит SQL-команда по удалению таблицы из БД. Следует предусмотреть отсутствие этой таблицы, чтобы не появилась ошибка выполнения. Подробнее о команде «DROP TABLE» смотрите по ссылке .
- Восстанавливаем исходное имя таблицы «v8users». Ее синтаксис аналогичен предыдущему примеру, изменили лишь местами имена таблиц.
- Возвращаем исходную запись параметров. При необходимости нужно удалить новую запись настроек пользователей, если платформа ее создала.
Автоматизируем процесс
Как пример использования приведенных SQL-команд создадим небольшую программку на платформе .NET, которая автоматизирует процесс сброса и восстановления учетных записей.
Программу Вы можете скачать по ссылке . Исходные файлы проекта Вы можете скачать отсюда . В принципе, написать подобрую программу не сложно. Важный момент — все действия по изменению базы данных должны выполняться в транзакции, что и было учтено.
Для сброса/восстановления учетных записей необходимо ввести адрес SQL-сервера, имя базы данных и информацию для аутентификации на SQL-сервере.
Таким образом, задача решена, а с помощью созданной программы процесс сброса учетных записей не будет проблемой.