MS SQL » История » Версия 3
Версия 2 (Всеволод Дорофеев, 23.04.2017 09:15) → Версия 3/4 (Всеволод Дорофеев, 23.04.2017 09:37)
h1. MS SQL - регламентные задачи
https://its.1c.ru/db/metod8dev#content:5837:hdoc
h3. Обновление статистик
<pre>
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'
</pre>
Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем. Рекомендуется обновлять статистики *не реже одного раза в день*.
h3. Очистка процедурного КЭШа
<pre>
DBCC FREEPROCCACHE
</pre>
Этот запрос следует выполнять непосредственно после обновления статистики. Соответственно, частота его выполнения должна совпадать с частотой обновления статистики.
h3. Дефрагментация индексов
<pre>
sp_msforeachtable N'DBCC INDEXDEFRAG (<имя базы данных>, ''?'')'
</pre>
Рекомендуется выполнять дефрагментацию индексов не реже одного раза в неделю.
h3. Реиндексация таблиц базы данных
<pre>
sp_msforeachtable N'DBCC DBREINDEX (''?'')'
</pre>
Реиндексация таблиц блокирует их на все время своей работы, что может существенно сказаться на работе пользователей. В связи с этим реиндексацию рекомендуется выполнять во время минимальной загрузки системы.
После выполнения реиндексации нет необходимости делать дефрагментацию индексов.
h1. Сброс пароля в 1с (MSSQL/PostgreSQL)
Бывают случаи когда БД работает в серверном варианте, при этом есть доступ на SQL Server, а пароль от пользователя 1С с полными права потерян, в этом случае возможно снять пароль способом который описан ниже.
Итак, поехали.
Платформа 1С при работе на SQL Server хранит список пользователей в двух местах, а именно в таблице v8users и в файле users.usr который бинарно расположен в таблице Params.
Теперь попробуем заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо всего навсего переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio логинимся и создаем запрос к базе данных с содержанием:
<pre>
EXEC sp_rename ‘v8users’, ‘v8users_old’
GO
UPDATE Params
SET FileName = ‘users.usr_old’
WHERE FileName = ‘users.usr’
GO
</pre>
После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:
<pre>
DROP TABLE v8users
GO
EXEC sp_rename ‘v8users_old’, ‘v8users’
GO
UPDATE Params
SET FileName = ‘users.usr’
WHERE FileName = ‘users.usr_old’
GO
</pre>
После выполнения запроса в списке пользователей появяться все пользователи 1С, останеться только найти нужного и изменить ему пароль.
Для PostgreSQL открываем pgAdminIII и выполняем:
<pre>
ALTER TABLE v8users RENAME TO v8users_old;
UPDATE Params SET FileName = ‘users.usr_old’ WHERE FileName = ‘users.usr’;
</pre>
Заходим в конфигуратор без пароля и выполняем в pgAdminIII:
<pre>
DROP TABLE v8users;
ALTER TABLE v8users_old RENAME TO v8users;
UPDATE Params SET FileName = ‘users.usr’ WHERE FileName = ‘users.usr_old’;
</pre>
https://its.1c.ru/db/metod8dev#content:5837:hdoc
h3. Обновление статистик
<pre>
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'
</pre>
Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем. Рекомендуется обновлять статистики *не реже одного раза в день*.
h3. Очистка процедурного КЭШа
<pre>
DBCC FREEPROCCACHE
</pre>
Этот запрос следует выполнять непосредственно после обновления статистики. Соответственно, частота его выполнения должна совпадать с частотой обновления статистики.
h3. Дефрагментация индексов
<pre>
sp_msforeachtable N'DBCC INDEXDEFRAG (<имя базы данных>, ''?'')'
</pre>
Рекомендуется выполнять дефрагментацию индексов не реже одного раза в неделю.
h3. Реиндексация таблиц базы данных
<pre>
sp_msforeachtable N'DBCC DBREINDEX (''?'')'
</pre>
Реиндексация таблиц блокирует их на все время своей работы, что может существенно сказаться на работе пользователей. В связи с этим реиндексацию рекомендуется выполнять во время минимальной загрузки системы.
После выполнения реиндексации нет необходимости делать дефрагментацию индексов.
h1. Сброс пароля в 1с (MSSQL/PostgreSQL)
Бывают случаи когда БД работает в серверном варианте, при этом есть доступ на SQL Server, а пароль от пользователя 1С с полными права потерян, в этом случае возможно снять пароль способом который описан ниже.
Итак, поехали.
Платформа 1С при работе на SQL Server хранит список пользователей в двух местах, а именно в таблице v8users и в файле users.usr который бинарно расположен в таблице Params.
Теперь попробуем заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо всего навсего переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio логинимся и создаем запрос к базе данных с содержанием:
<pre>
EXEC sp_rename ‘v8users’, ‘v8users_old’
GO
UPDATE Params
SET FileName = ‘users.usr_old’
WHERE FileName = ‘users.usr’
GO
</pre>
После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:
<pre>
DROP TABLE v8users
GO
EXEC sp_rename ‘v8users_old’, ‘v8users’
GO
UPDATE Params
SET FileName = ‘users.usr’
WHERE FileName = ‘users.usr_old’
GO
</pre>
После выполнения запроса в списке пользователей появяться все пользователи 1С, останеться только найти нужного и изменить ему пароль.
Для PostgreSQL открываем pgAdminIII и выполняем:
<pre>
ALTER TABLE v8users RENAME TO v8users_old;
UPDATE Params SET FileName = ‘users.usr_old’ WHERE FileName = ‘users.usr’;
</pre>
Заходим в конфигуратор без пароля и выполняем в pgAdminIII:
<pre>
DROP TABLE v8users;
ALTER TABLE v8users_old RENAME TO v8users;
UPDATE Params SET FileName = ‘users.usr’ WHERE FileName = ‘users.usr_old’;
</pre>