vk fb tw rss

Ошибки в ЦУП и способы решения

Mistake in math on chalkboard

 

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

 

  Эксперт — это человек совершивший все возможные ошибки в очень узкой области.

 

Повторюсь еще раз,  90% ошибок возникает из-за неправильной настройки ЦУП. Как настроить его правильно достаточно подробно описано здесь.

Перед тем как искать свою проблему здесь, убедитесь что вы все настроили верно, т.к. проблемы возникающие из-за неверной настройки здесь не описаны.

 

Ошибка:
Точка входа в процедуру PdhAddEnglishCounterW не найдена в библиотеке DLL pdh.dll

 

Решение:

  1. Использовать внешнюю компоненту из версии ЦУП 2.0.4.11 и изменить код при сравнении версий
  2. Использовать ОС не ниже Windows Vista
  3. Использовать версию ЦУП 2.0.4.11

Описание:

Возникает при работе на версии ОС ниже чем Windows Vista, в том числе возникает и на Windows Server 2003
——————————————

Ошибка:  

Counters.cpp : 112 (0xc0000bb8) – Не удалось добавить счетчик производительности

 

Решение:

  1. Переименовать в коде именя счетчиков с английского наименования на русское (если используется русская локализация MS SQL Server). Измененные функции «ИмяСчетчикаКоличествоВзаимоблокировокMSSQL» и «ИмяСчетчикаКоличествоОжиданийMSSQL» есть в архиве.
  2. Не использовать показатели «Количество взаимоблокировок» или «Количество таймаутов»

Описание:

Если выбрать показатель «Количество взаимоблокировок» или «Количество таймаутов», то ЦУП добавляет счетчики SQL Server, что бы получить эту информацию. Счетчики добавляются по английскому наименованию, а если установлена русская локализация MS SQL, то возникает данная ошибка.

——————————————

Ошибка:
MSSQL.cpp : 79 ( 0x0: The operation completed successfully. ) — SQL Server connection failed.

 

Решение:

  1. Создать доменного пользователя, дать ему все права предыдущего пользователя и от его имени запускать сервер ЦУП
  2. Сделать пользователей с одинаковым именем на SQL и на сервере ЦУП

Описание:
Возникает при анализе взаимоблокировок. Заморочки с правами доступа.

——————————————

Ошибка:

MSSQL.cpp : 79 ( 0x36b7: The requested lookup key was not found in any active activation context. ) — SQL Server connection failed.

Она же только на русском:

.\MSSQL.cpp : 79 ( 0x36b7: Указанный ключ соответствия не обнаружен ни в одном из активных контекстов активации. ) — SQL Server connection failed

 

Решение:

Клиенту ЦУП нужно дать права «Alter trace» в SQL Server, просто откройте инструкцию на шаге настройки «Трассировки» и сделайте все по шагам еще раз.

Описание:

Возникает при анализе взаимоблокировок.

——————————————

Ошибка:
Ошибка при вызове метода контекста (ПрочитатьXML)
{ОбщийМодуль.АнализБлокировок1С.Модуль(975)}: Преобразование значения к типу Число не может быть выполнено

Решение:
заменить код функции «ПодготовитьБлокировки», есть в архиве.

Описание:
Ничего особенного, просто ошибка в коде

——————————————
Ошибка:
Ошибка аутентификации при попытке входа в базу ЦУП в терминале, на отдельной машине все запускается и ошибки нет

Решение:
Установить релиз платформы не ниже 8.2.15.257

Описание:
COMConnector не может найти ключ защиты из-за ошибки в платформе
Ошибка платформы «10080827 Получение лицензии объектом V82.COMConnector»

——————————————
Ошибка:
Microsoft OLE DB Provider for SQL Server: SHOWPLAN permission denied in database ‘tempdb’.

Решение:
Выполнить в СУБД команду
USE tempdb
GO
GRANT SHOWPLAN TO
GO

Описание:
У пользователя SQL, под которым запущена исследуемая база, нет прав на получение плана запроса.

——————————————

 

Ошибка:
Иногда не удается пройти шаг включения ТЖ

Решение:

  1. Синхронизировать время на сервере ЦУП и на сервере исследуемой базы
  2. Возможна ошибка из-за летнего времени, описана здесь

 

Описание:
При создании ТЖ сравнивается время файлов, если оно не совпадает ЦУП «думает» что ТЖ не создан.

——————————————

 

Ошибка:

{ОбщийМодуль.АнализБлокировок1С.Модуль(392)}: Ошибка при вызове метода контекста (Выполнить): {(8, 27)}: Не задано значение параметра «НачалоТранзакции»И ТЖ.МоментВремени МЕЖДУ <>&НачалоТранзакции И &МоментВремениЖертвы

 

Решение:

Ошибка в коде процедуры «ПодготовитьПредпологаемыхВиновников», исправленная процедура есть в архиве.

Описание:

ЦУП попытался проанализировать «отрывок» транзакции, данные по которой полностью не записались в базу, например ЦУП выключили в середине транзакции.

——————————————

 

Ошибка:

Не собираются оперативные показатели

 

Решение:

1. Не назначена роль processadmin для пользователя под которым запускается сервер 1С исследуемой базы (чаще всего)

2. «Портится» COM объект «ИБ» в процедуре ПолучитьСоединенияИБ (очень редко но бывает) — т.е. в отладчике объект есть и свойства у него есть, но при попытке использовать метод GetInfoBaseConnections получается лажа. В моей практике было всего пару раз, ловится только через отладчик. В этом случае надо заменить функцию ПолучитьСоединенияИБ, текстом из вложения. Причина не ясна.

——————————————

 

Ошибка:
{ОбщийМодуль.АнализБлокировок1С.Модуль(941)}: Индекс находится за границами массива

 

Решение:

Исправить строку 923 ОМ. АнализБлокировок1С

// заплатка на случай если СоставБлокировки[СчИзмерения] получается что-то типа "Счет-фактура 0000001 от 01.01.2001"
Если Найти(СоставБлокировки[СчИзмерения], "=") = 0 Тогда
Продолжить;
КонецЕсли;

Так же нужно исправить функцию БлокировкаРазобрана в том же модуле, вместо

Структура = Новый Структура("РежимБлокировки, Ресурс", Выборка.РежимБлокировки, Выборка.Ресурс);

Нужно написать:

Структура = Новый Структура("Режим, РежимБлокировки, Ресурс", Выборка.РежимБлокировки, Выборка.РежимБлокировки, Выборка.Ресурс);

Описание:

Ошибка в коде, не предусмотрена ситуация когда есть пробелы в значениях свойств события TLOCK

——————————————

 

Ошибка:

Невозможно пройти мастер на шаге настройки ТЖ в том случае, если используется более одного сервера в кластере.

Решение:

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

——————————————

 

Можно ускорить разбор данных исправив неоптимальный запрос, как бы стрнно это не звучало 🙂

Необходимо в ОМ.Анализ в функции ВыгрузитьДанные, переписать запрос с использованием временной таблицы вместо подзапроса.

Ускорение будет весьма ощутимо, чем больше данных было собрано, тем сильнее будет эффект.

——————————————

 

Можно ускорить запрос который отвечает за построение графика

В процедуре ЖурналПоказателей.ПодготовитьДанныеДляПросмотра есть следующий запрос:

ВЫБРАТЬ  *
ПОМЕСТИТЬ
ЖурналПоказателей
ИЗ
РегистрСведений.ЖурналПоказателей
ГДЕ
ИнформационнаяБаза = &ИнформационнаяБаза
ИНДЕКСИРОВАТЬ ПО
Период,
Показатель,
НомерЗаписи

Во временную таблицу помещается весь(!) журнал и чем дольше вы ведете статистику тем дольше будет выполнятся этот запрос.

Решение:

Добавьте условие «И Период МЕЖДУ &НачалоИнтервала И &КонецИнтервала»
и установите параметры:

Запрос.Параметры.Вставить("НачалоИнтервала", Контекст.НачалоИнтервала()-1);
Запрос.Параметры.Вставить("КонецИнтервала", Контекст.КонецИнтервала()+1);

——————————————

P.S. Спасибо Саликову Алексею, за решение некоторых ошибок, описанных в этой статье.

 

Скачать исправленные модули ЦУП. 

 

Если у вас возникли трудности при работе или настройке ЦУП, пишите в комментариях или на форуме. 

 

Друзья, давайте не будем теряться на просторах интернета!  Я предлагаю вам получать на e-mail извещения о публикации новых статей и материалов, таким образом вы всегда будете в курсе самых интересных новостей!

 



Лучшие материалы по теме

Расскажите своим друзьям
Вам ничего не стоит, а им будет интересно
Подпишитесь на обновления
Ваш e-mail: * Ваше имя: *


Обсудить Вконтакте


Обсудить в Facebook

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *