Проект

Общее

Профиль

MS SQL » История » Версия 4

Всеволод Дорофеев, 23.04.2017 09:40

1 2 Всеволод Дорофеев
h1. MS SQL - регламентные задачи
2 2 Всеволод Дорофеев
3 2 Всеволод Дорофеев
https://its.1c.ru/db/metod8dev#content:5837:hdoc
4 2 Всеволод Дорофеев
5 2 Всеволод Дорофеев
h3. Обновление статистик
6 2 Всеволод Дорофеев
7 2 Всеволод Дорофеев
<pre>
8 2 Всеволод Дорофеев
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'
9 2 Всеволод Дорофеев
</pre>
10 2 Всеволод Дорофеев
11 2 Всеволод Дорофеев
Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем. Рекомендуется обновлять статистики *не реже одного раза в день*. 
12 2 Всеволод Дорофеев
13 2 Всеволод Дорофеев
h3. Очистка процедурного КЭШа
14 2 Всеволод Дорофеев
15 2 Всеволод Дорофеев
<pre>
16 2 Всеволод Дорофеев
DBCC FREEPROCCACHE
17 2 Всеволод Дорофеев
</pre>
18 2 Всеволод Дорофеев
19 2 Всеволод Дорофеев
Этот запрос следует выполнять непосредственно после обновления статистики. Соответственно, частота его выполнения должна совпадать с частотой обновления статистики. 
20 2 Всеволод Дорофеев
21 2 Всеволод Дорофеев
h3. Дефрагментация индексов
22 2 Всеволод Дорофеев
23 2 Всеволод Дорофеев
<pre>
24 2 Всеволод Дорофеев
sp_msforeachtable N'DBCC INDEXDEFRAG (<имя базы данных>, ''?'')'
25 2 Всеволод Дорофеев
</pre>
26 2 Всеволод Дорофеев
27 2 Всеволод Дорофеев
Рекомендуется выполнять дефрагментацию индексов не реже одного раза в неделю.
28 2 Всеволод Дорофеев
29 2 Всеволод Дорофеев
h3. Реиндексация таблиц базы данных
30 2 Всеволод Дорофеев
31 2 Всеволод Дорофеев
<pre>
32 2 Всеволод Дорофеев
sp_msforeachtable N'DBCC DBREINDEX (''?'')'
33 2 Всеволод Дорофеев
</pre>
34 2 Всеволод Дорофеев
35 2 Всеволод Дорофеев
Реиндексация таблиц блокирует их на все время своей работы, что может существенно сказаться на работе пользователей. В связи с этим реиндексацию рекомендуется выполнять во время минимальной загрузки системы.
36 2 Всеволод Дорофеев
После выполнения реиндексации нет необходимости делать дефрагментацию индексов. 
37 3 Всеволод Дорофеев
38 3 Всеволод Дорофеев
39 3 Всеволод Дорофеев
h1. Сброс пароля в 1с (MSSQL/PostgreSQL)
40 3 Всеволод Дорофеев
41 3 Всеволод Дорофеев
42 3 Всеволод Дорофеев
Бывают случаи когда БД работает в серверном варианте, при этом есть доступ на SQL Server, а пароль от пользователя 1С с полными права потерян, в этом случае возможно снять пароль способом который описан ниже.
43 3 Всеволод Дорофеев
Итак, поехали.
44 3 Всеволод Дорофеев
Платформа 1С при работе на SQL Server хранит список пользователей в двух местах, а именно в таблице v8users и в файле users.usr который бинарно расположен в таблице Params.
45 3 Всеволод Дорофеев
Теперь попробуем заставить платформу думать что в базе нет ни одного пользователя. Для этого необходимо всего навсего переименовать таблицу v8users и строчку с файлом users.usr. Открываем SQL Server Management Studio логинимся и создаем запрос к базе данных с содержанием:
46 3 Всеволод Дорофеев
47 3 Всеволод Дорофеев
<pre>
48 3 Всеволод Дорофеев
EXEC sp_rename ‘v8users’, ‘v8users_old’
49 3 Всеволод Дорофеев
GO
50 3 Всеволод Дорофеев
UPDATE Params
51 3 Всеволод Дорофеев
SET FileName = ‘users.usr_old’
52 3 Всеволод Дорофеев
WHERE FileName = ‘users.usr’
53 3 Всеволод Дорофеев
GO
54 3 Всеволод Дорофеев
</pre>
55 3 Всеволод Дорофеев
56 3 Всеволод Дорофеев
После этого открываем базу данных в конфигураторе и видим что платформа не спрашивает пользователя и пароль, при этом в SQL Server будет заново создана таблица v8users. Теперь чтобы всех пользователей вернуть обратно не закрывая конфигуратора выполним в SQL Server Management Studio запрос:
57 3 Всеволод Дорофеев
58 3 Всеволод Дорофеев
<pre>
59 3 Всеволод Дорофеев
DROP TABLE v8users
60 3 Всеволод Дорофеев
GO
61 3 Всеволод Дорофеев
EXEC sp_rename ‘v8users_old’, ‘v8users’
62 3 Всеволод Дорофеев
GO
63 3 Всеволод Дорофеев
UPDATE Params
64 3 Всеволод Дорофеев
SET FileName = ‘users.usr’
65 3 Всеволод Дорофеев
WHERE FileName = ‘users.usr_old’
66 3 Всеволод Дорофеев
GO
67 3 Всеволод Дорофеев
</pre>
68 3 Всеволод Дорофеев
69 3 Всеволод Дорофеев
После выполнения запроса в списке пользователей появяться все пользователи 1С, останеться только найти нужного и изменить ему пароль.
70 3 Всеволод Дорофеев
71 3 Всеволод Дорофеев
Для PostgreSQL открываем pgAdminIII и выполняем:
72 3 Всеволод Дорофеев
73 3 Всеволод Дорофеев
<pre>
74 3 Всеволод Дорофеев
ALTER TABLE v8users RENAME TO v8users_old;
75 3 Всеволод Дорофеев
UPDATE Params SET FileName = ‘users.usr_old’ WHERE FileName = ‘users.usr’;
76 3 Всеволод Дорофеев
</pre>
77 3 Всеволод Дорофеев
78 3 Всеволод Дорофеев
Заходим в конфигуратор без пароля и выполняем в pgAdminIII:
79 3 Всеволод Дорофеев
80 3 Всеволод Дорофеев
<pre>
81 3 Всеволод Дорофеев
DROP TABLE v8users;
82 3 Всеволод Дорофеев
ALTER TABLE v8users_old RENAME TO v8users;
83 3 Всеволод Дорофеев
UPDATE Params SET FileName = ‘users.usr’ WHERE FileName = ‘users.usr_old’;
84 3 Всеволод Дорофеев
</pre>
85 4 Всеволод Дорофеев
86 4 Всеволод Дорофеев
87 4 Всеволод Дорофеев
h3. Определение версии MS SQL
88 4 Всеволод Дорофеев
89 4 Всеволод Дорофеев
<pre>
90 4 Всеволод Дорофеев
SELECT SERVERPROPERTY('Edition')
91 4 Всеволод Дорофеев
UNION ALL
92 4 Всеволод Дорофеев
SELECT SERVERPROPERTY('ProductVersion')
93 4 Всеволод Дорофеев
UNION ALL
94 4 Всеволод Дорофеев
SELECT SERVERPROPERTY('ProductLevel');
95 4 Всеволод Дорофеев
</pre>