Сброс пользователей в клиент-серверной базе 1С:Предприятия 8.x

24 апреля 2013

Как сбросить пароли?

В клиент-серверном режиме работы все данные хранятся в базе данных, управляемой одной из СУБД: MS SQL, Postgree SQL, IBM DB2 или Oracle. Информация об учетных записях хранится в двух таблицах: "v8users" и "Params". 

В некоторых ситуациях может появиться необходимость сбросить учетные записи пользователей, чтобы войти в информационную базу. В статье рассмотрим действия, необходимые для выполнения этой задачи. В примере будем использовать MS SQL Server 2012 Express. Имя базы данных на SQL-сервере - "Exp".

Для того, чтобы сбросить учетные записи нужно выполнить два действия:

  1. Удалить таблицу "v8users".
  2. Удалить запись из таблицы "Params", у которой в первой колонке "FileName" содержится значение "users.usr".
Далее рассмотрим SQL-команды для автоматизации описанных действий, а также для восстановления списка пользователей информационной базы.

SQL-команды

И так, нам нужны SQL-команды для сброса и восстановления пользователей информационной базы. Начнем с команд сброса списка пользователей. Нам нужно выполнить следующие действия:

  1. Переименовываем таблицу "v8users" в "h8users" вместо ее удаления. Это позволит восстановить таблицу в дальнейшем.
    sp_rename 'v8users', 'h8users
    Подробнее о команде "sp_rename" Вы можете прочитать здесь.
  2. В таблице "Params" также не будем удалять запись, а лишь изменим значение в колонке "FileName" с "users.usr" на "husers.usr". Тогда платформа не сможет найти параметры пользователей информационной базы. Подробнее о команде "UPDATE" Вы можете  узнать здесь.
    UPDATE Params Set FileName = 'husers.usr' Where FileName = 'users.usr'

Выполнив эти шаги, мы без проблем сможем зайти в информационную базу, пропустив этап аутентификации. Теперь перейдем к рассмотрению команд по восстановлению списка пользователей. Всего будет три команды:

  1. Удаление таблицы "v8users", поскольку входа в ИБ платформа создает таблица заново, если она отсутствовала. Вот так выглядит SQL-команда по удалению таблицы из БД.
    DROP TABLE v8users
    Следует предусмотреть отсутствие этой таблицы, чтобы не появилась ошибка выполнения. Подробнее о команде "DROP TABLE"  смотрите по ссылке.
  2. Восстанавливаем исходное имя таблицы "v8users".
    sp_rename 'h8users', 'v8users'
    Ее синтаксис аналогичен предыдущему примеру, изменили лишь местами имена таблиц.
  3. Возвращаем исходную запись параметров.
    UPDATE Params Set FileName = 'users.usr' Where FileName = 'husers.usr'
     При необходимости нужно удалить новую запись настроек пользователей, если платформа ее создала. 
Используя приведенные выше команды, мы можем сбрасывать/восстанавливать список пользователей информационной базы.

Автоматизируем процесс

Как пример использования приведенных SQL-команд создадим небольшую программку на платформе .NET, которая автоматизирует процесс сброса и восстановления учетных записей.

Программу Вы можете скачать по ссылке. Исходные файлы проекта Вы можете скачать отсюда. В принципе, написать подобрую программу не сложно. Важный момент - все действия по изменению базы данных должны выполняться в транзакции, что и было учтено.

Для сброса/восстановления учетных записей необходимо ввести адрес SQL-сервера, имя базы данных и информацию для аутентификации на SQL-сервере.

Таким образом, задача решена, а с помощью созданной программы процесс сброса учетных записей не будет проблемой.

Внимание: Данная статья не является руководством к действию! Автор не несет ответственности за последствия использования данного материала в корыстных целях!!!


comments powered by Disqus